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

使用合规O365商业账户访问SharePoint站点时遇Graph API SPO许可证错误

使用Microsoft Graph API访问SharePoint时遇到"租户无SPO许可证"错误

错误详情

Failed to get site ID. Status code: 400
{
    'error': {
        'code': 'BadRequest',
        'message': 'Tenant does not have a SPO license.',
        'innerError': {
            'date': '2024-05-22T12:52:33',
            'request-id': 'cd207c1f-5bbc-435d-b6e3-94170d9e6aff',
            'client-request-id': 'cd207c1f-5bbc-435d-b6e3-94170d9e6aff'
        }
    }
}

当前配置情况

Azure AD应用注册配置

  • 已创建应用注册并授予Sites.ReadWrite.All和Files.ReadWrite.All权限
  • 已为这些权限授予管理员同意

SharePoint权限配置

  • 已在站点的_layouts/15/appinv.aspx页面添加应用,使用的权限请求XML:
<AppPermissionRequests>
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

许可证情况

  • 已验证租户拥有可用的SharePoint Online许可证
  • 已为用户分配SharePoint Online许可证

Python脚本信息

  • 使用msal库获取访问令牌并向Microsoft Graph API发起请求
  • 使用的端点:https://graph.microsoft.com/v1.0/sites/*.sharepoint.com:/sites/Document_Repository

排查方向

  1. 确认租户级SPO许可证启用状态
    登录Microsoft 365管理中心,进入账单>许可证,检查SharePoint Online许可证是否已在租户级别启用(而非仅购买未激活),同时确认许可证的分配数量足够且状态正常。

  2. 验证应用权限类型
    确保Azure AD应用中添加的是应用权限而非委派权限。脚本采用服务端模式运行,委派权限无法满足无用户交互的场景。若之前添加的是委派权限,需删除后添加应用权限并重新获取管理员同意。

  3. 修正Graph API站点端点格式
    端点中的*.sharepoint.com需替换为实际租户域名(如contoso.sharepoint.com),通配符会导致API无法识别具体站点。正确的端点示例:

    https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/Document_Repository
    
  4. 确认SharePoint站点应用权限已批准
    进入站点设置>应用>已安装的应用,找到目标应用,检查其权限请求是否已被站点管理员批准。未批准的权限请求会导致访问被拒绝。

  5. 检查访问令牌的权限声明
    解码获取到的访问令牌(可使用jwt工具),确认roles声明中包含Sites.ReadWrite.All或Files.ReadWrite.All权限。若令牌中无对应权限,需重新获取令牌或检查应用权限配置。

  6. 验证租户SharePoint服务启用状态
    在Microsoft 365管理中心>设置>组织设置>服务中,确认SharePoint Online服务已启用。若服务未启用,即使有许可证也无法使用相关功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:57:05