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

获取SharePoint站点API令牌时遇invalid_scope错误求助

解决Azure AD应用获取SharePoint令牌时的invalid_scope错误

我来帮你理清这个问题——你遇到的invalid_scope错误是因为SharePoint Online的客户端凭据(client_credentials)流对scope的要求和你尝试的格式不匹配,下面具体说怎么解决:

核心错误原因

对于SharePoint Online的client_credentials授权模式,不能直接把单个权限(比如Sites.Read.All)拼在SharePoint域名后面作为scope。这个模式下,必须使用.default后缀的scope来引用你预先给应用授予的所有应用权限。

正确的请求参数配置

你需要调整请求体里的scope参数为以下格式:

https://<你的租户名称>.sharepoint.com/.default

完整的x-www-form-urlencoded请求体应该是这样:

client_id={你的应用ID}&scope=https://{{tenantName}}.sharepoint.com/.default&client_secret={你的应用密钥}&grant_type=client_credentials

额外需要确认的两点

  • 权限类型与管理员同意:确保你给Azure AD应用授予的是SharePoint的应用权限(不是委派权限),并且已经完成了管理员同意——client_credentials流必须要求应用权限,且必须经过管理员同意才能生效。
  • 令牌使用方式:获取到有效的Bearer令牌后,调用SharePoint REST API时,将令牌放在Authorization: Bearer <你的令牌>请求头中即可,比如调用站点列表接口https://{{tenantName}}.sharepoint.com/_api/sites来验证权限是否生效。

为什么你用Graph API的https://graph.microsoft.com/.default能成功?因为Graph API的client_credentials流同样遵循这个规则——.default代表应用已被授予的所有权限的集合,而SharePoint API在这个授权模式下的要求是一致的,只是域名换成你的SharePoint租户域名而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:00:54