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

如何调用SharePoint API?多租户OAuth2登录遇受众验证错误

问题原因
  • 受众不匹配:当前获取的access token受众是https://graph.microsoft.com,仅适用于Graph API;而SharePoint Online(SPO)API要求token的受众必须是目标SPO站点的根URL(如https://mydomain.sharepoint.com)或SPO资源ID,这就是触发AudienceUriValidationFailedException的核心原因。
  • 权限范围混淆:你请求的权限混合了Graph API权限(如Files.Read.All、Sites.Read.All)和SPO专属权限(https://mydomain.sharepoint.com/AllSites.Read),但获取token时若指定资源为Graph,SPO权限不会被正确纳入对应受众的token中。
正确获取SPO API可用token的方法
  1. 指定SPO资源请求token:

    • OAuth2授权码流中,将resource参数设为你的SPO站点根URL(如https://mydomain.sharepoint.com),或把scope参数前缀设为该URL加.default(示例:https://mydomain.sharepoint.com/AllSites.Read https://mydomain.sharepoint.com/MyFiles.Read offline_access)。
    • 若使用MSAL库,在AcquireTokenForClient或AcquireTokenInteractive方法中添加WithResource("https://mydomain.sharepoint.com"),明确指定SPO为目标资源。
  2. 分离Graph与SPO的token请求:
    Graph和SPO是独立资源,需分别获取两个token:

    • 用于Graph API:资源指定为https://graph.microsoft.com,搭配Graph相关权限。
    • 用于SPO API:资源指定为SPO站点URL,搭配SPO专属权限。
  3. 验证权限配置:
    确保Azure AD应用注册中已正确添加SPO应用权限(如https://mydomain.sharepoint.com/AllSites.Read),且完成了管理员同意(应用权限需此步骤)。

多租户场景额外注意事项

目标租户的管理员必须已同意你的应用所请求的SPO权限,否则用户或应用无法获取有效SPO token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:03:11