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

使用Microsoft Graph API访问OneDrive报错:无法获取用户个人网站URL

问题:应用权限调用Microsoft Graph API获取用户OneDrive失败,报错“Unable to retrieve user's mysite URL”

已配置Files.ReadWrite.All和Sites.ReadWrite.All等应用权限,目标用户确实拥有在线OneDrive文件,但使用应用权限调用接口时无法查询到用户的Drive;使用该用户账号在Graph Explorer中以委托权限调用则可成功返回结果。

测试情况

  • 调用https://graph.microsoft.com/v1.0/users可正常返回用户列表
  • 调用https://graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER可正常返回指定用户信息
  • 调用https://graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER/drive和https://graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER/drive/root均失败,报错Unable to retrieve user's mysite URL

测试代码

SCOPE = ["https://graph.microsoft.com/.default"]
CLIENT_SECRET = ""
TENENT_ID = ""
APPLICATION_CLIENT_ID = ""
AUTHORITY = "https://login.microsoftonline.com/" + TENENT_ID
KFM_USER_ID = ""
ENDPOINT = "https://graph.microsoft.com/v1.0/users/" + KFM_USER_ID # 此调用正常工作
ENDPOINT = "https://graph.microsoft.com/v1.0/users/" + KFM_USER_ID + "/drive" # 此调用失败 :(


import msal
app = msal.ConfidentialClientApplication(APPLICATION_CLIENT_ID, authority=AUTHORITY, client_credential=CLIENT_SECRET)

result = app.acquire_token_for_client(scopes=SCOPE)

graph_data = requests.get(
        ENDPOINT,
        headers={'Authorization': 'Bearer ' + result['access_token']},
).json()
解决方案

这个报错的核心原因是应用权限模式下,Graph API无法通过用户上下文自动获取MySite(即OneDrive站点)的URL,而委托权限(如Graph Explorer使用的用户授权模式)可以依托用户会话获取相关信息。可尝试以下解决方法:

  1. 确认用户OneDrive已完成初始化
    部分新创建的账号可能未触发OneDrive站点初始化,让用户手动登录一次OneDrive网页版,确保站点已创建完成。

  2. 通过站点端点间接访问Drive
    应用权限下可绕过/user/{id}/drive的直接调用,改用站点接口获取:

    • 先调用https://graph.microsoft.com/v1.0/users/{user-id}/sites/root获取用户OneDrive对应的站点信息
    • 再使用返回的site-id调用https://graph.microsoft.com/v1.0/sites/{site-id}/drive获取Drive数据
  3. 验证权限状态
    确认已为应用权限完成管理员同意操作,确保Files.ReadWrite.All和Sites.ReadWrite.All权限的状态为“已授予”,而非“需要管理员同意”。

  4. 使用用户ID替代UPN
    部分场景下,UPN可能存在解析异常,尝试使用用户的GUID格式ID替代UPN调用/users/{user-id}/drive接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:15:17