You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用OneDrive Graph API获取用户信息时遇403错误求排查

问题:调用Microsoft Graph API获取OneDrive信息返回403 Forbidden

按照官方文档,通过接口 https://graph.microsoft.com/v1.0/users/foo@bar.com/drive 获取用户OneDrive信息时,收到403 Forbidden错误。已知用户拥有商业账户,且凭证无误,需排查以下内容:

错误信息

(
    [status] => 500
    [error] => Error fetching files: file_get_contents(https://...@bar.com/drive): Failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden

)

补充信息

权限配置截图

权限截图

认证代码(Client Credentials流程)

public static function authenticate($clientId, $tenantId, $clientSecret) {
    $url = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token";

    $postData = http_build_query([
        'client_id'     => $clientId,
        'scope'         => 'https://graph.microsoft.com/.default',
        'client_secret' => $clientSecret,
        'grant_type'    => 'client_credentials',
    ]);

    $options = [
        'http' => [
            'header'  => "Content-Type: application/x-www-form-urlencoded
",
            'method'  => 'POST',
            'content' => $postData,
        ],
    ];

    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);

    ....

    $body = json_decode($response, true);

    ...

    return $body['access_token'];
}

用户概览截图

用户概览截图


排查方向
  • 权限是否完成管理员同意:从权限截图看配置了Files.Read.All应用权限,但这类权限必须由全局管理员或SharePoint管理员手动授予同意,仅添加权限未确认同意会直接导致403,需在Azure AD中检查应用权限状态是否为“已授予”。
  • 用户OneDrive初始化状态:部分新创建的商业账户用户,需首次登录OneDrive后才会生成个人站点,若OneDrive未完成初始化,调用接口会返回403,结合用户概览截图确认该用户OneDrive是否已正常启用。
  • 令牌权限有效性:解码获取到的access_token,检查roles字段是否包含Files.Read.All或对应读取权限,同时确认令牌受众(aud)为https://graph.microsoft.com、未过期。
  • 租户级访问限制:排查租户是否设置了应用权限范围限制,比如禁止该应用访问特定用户的OneDrive资源,或配置了IP/地理位置访问策略拦截请求。
  • API权限匹配度:确认/users/{user-id}/drive接口所需权限配置正确,该接口支持的应用权限为Files.Read.All或Sites.Read.All,需确保已配置并授予对应权限。

内容的提问来源于stack exchange,提问作者Peter VARGA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:30:12