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

使用Microsoft Graph API上传文件至OneDrive遇SPO许可证错误求助

场景可行性确认与错误修复方案

场景可行性

你的需求完全可行:通过OAuth 2.0客户端凭证授权流,让应用以自身身份将文件上传到指定用户的OneDrive中央目录,终端用户无需拥有个人微软账号,这个流程符合Microsoft Graph的使用规范,只要配置正确即可实现。

错误“Tenant does not have a SPO license”修复步骤

1. 确认目标用户的许可证分配

虽然你的租户拥有含SharePoint的Office 365 Business许可证,但客户端凭证流调用用户OneDrive时,必须确保目标用户(即接口中的253f61d2-e692-4be3-9f13-d8a88a9dda1b)已被分配SharePoint Online或OneDrive for Business许可证。

  • 操作路径:登录Azure AD门户 → 进入「用户」找到该用户 → 查看「许可证和应用」,确认已分配对应许可证。
  • 注:Graph Explorer能成功调用是因为你使用的是用户身份(自身有许可证),而客户端凭证流以应用身份访问时,会校验目标用户的许可证状态。

2. 检查应用权限配置

客户端凭证流要求配置应用权限(而非委派权限),且需完成管理员同意:

  • 登录Azure AD应用注册页面 → 进入「API权限」,确认添加的是Files.ReadWrite.All或Sites.ReadWrite.All这类应用权限(不是委派权限)。
  • 确保权限状态显示为「已授予[你的租户名]管理员同意」,未完成管理员同意会导致权限不足,有时会被包装为许可证错误。

3. 验证访问令牌的权限范围

解码你的access token(可通过本地工具或在线JWT解析工具),检查roles声明中是否包含你配置的应用权限(如Files.ReadWrite.All):

  • 获取令牌时,请求的scope参数必须是https://graph.microsoft.com/.default,确保代码中使用的是这个scope,否则令牌不会包含应用权限。

4. 确认接口调用的正确性

你当前调用的https://graph.microsoft.com/v1.0/users/{user-id}/drive/root是访问用户OneDrive for Business的正确路径,需确保目标用户的OneDrive已被激活(首次登录微软365门户会自动激活,若未激活可手动触发)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:07:30