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

使用OneDrive API获取文件列表时遇未认证错误的求助

解决OneDrive API客户端凭证流认证报错问题

你遇到的unauthenticated错误,主要是因为请求方式、权限配置、API路径这几个环节出现了问题,具体修复点如下:


1. 获取Token的请求方式错误

获取OAuth2 Token的端点必须使用POST方法,你代码里用了requests.get,这会直接导致请求失败。修正后的Token获取代码:

import requests

data = {
    'client_id': '你的client_id', 
    'scope': 'https://graph.microsoft.com/.default',
    'client_secret': '你的client_secret',
    'grant_type': 'client_credentials'
}

headers = {"Content-type": "application/x-www-form-urlencoded"}

# 改用POST请求
result = requests.post(
    "https://login.microsoftonline.com/你的tenant-id/oauth2/v2.0/token", 
    data=data, 
    headers=headers
)

# 增加错误判断,避免KeyError
if result.status_code == 200:
    access_token = result.json()['access_token']
else:
    print(f"Token获取失败:{result.text}")

2. Scope格式不符合客户端凭证流要求

客户端凭证流(client_credentials)属于应用权限,必须使用https://graph.microsoft.com/.default作为scope,这个格式会自动关联你在Azure AD应用注册中配置的所有应用权限,不能使用用户权限类型的scope。

3. API请求路径错误

/drive路径是针对用户身份(比如授权码流)的默认驱动器,而客户端凭证流是应用身份,没有关联具体用户,因此不能用这个路径。你需要指定具体的驱动器:

  • 如果是SharePoint站点的文档库:GET https://graph.microsoft.com/v1.0/sites/{site-id}/drive/root/children
  • 如果已知Drive ID:GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children

可以先调用GET https://graph.microsoft.com/v1.0/sites获取目标站点ID,再发起文件列表请求。

4. 缺少应用权限配置

在Azure AD应用注册中,必须给你的应用添加应用权限(不能用委托权限),比如Files.Read.All或Sites.Read.All,并且需要全局管理员完成权限同意操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:41