使用Microsoft Graph API createUploadSession上传文件遇accessDenied错误求助
Microsoft Graph API createUploadSession 报 accessDenied 错误排查方案
问题详情
调用Microsoft Graph API的createUploadSession接口上传文件时,返回如下权限错误:
{ "error": { "code": "accessDenied", "message": "Access denied", "innerError": { "date": "2023-08-04T10:15:48", "request-id": "97676563-7d6e-4bb9-abd2-46513e0940b8", "client-request-id": "97676563-7d6e-4bb9-abd2-46513e0940b8" } } }
当前可正常创建文件夹,但上传文件操作持续失败,已配置相关权限(含新增的SharePoint权限),问题未解决。
排查方向与解决方案
- 核对权限配置
- 确认已授予对应文件写入权限:委托权限需包含
Files.ReadWrite,应用权限需包含Files.ReadWrite.All或Sites.ReadWrite.All(针对SharePoint站点)。注意创建文件夹与上传文件的权限要求可能存在差异,需确保权限覆盖文件写入操作。 - 应用权限需确认已完成管理员同意,且权限范围覆盖目标站点/文档库。
- 确认已授予对应文件写入权限:委托权限需包含
- 验证请求路径正确性
- 检查
createUploadSession的请求URL是否准确,示例正确格式:# 个人OneDrive POST /me/drive/items/{parent-item-id}:/{filename}:/createUploadSession # SharePoint站点文档库 POST /sites/{site-id}/drive/items/{parent-item-id}:/{filename}:/createUploadSession - 确认目标文件夹的权限设置,当前身份需具备向该文件夹写入文件的权限(部分场景下创建文件夹权限与文件写入权限是分离的)。
- 检查
- 解析访问令牌
- 使用JWT解码工具解析访问令牌,查看
scp(委托权限)或roles(应用权限)声明,确认包含所需的上传权限,同时检查令牌是否过期。
- 使用JWT解码工具解析访问令牌,查看
- 检查应用注册配置
- 应用权限场景下,需确认应用在SharePoint admin中心已被授予目标站点的访问权限(部分租户需手动配置站点级权限)。
- 委托权限场景下,若为桌面/移动应用,需确保应用注册已启用公共客户端流程。
- 简化场景测试
- 使用Microsoft Graph Explorer直接调用
createUploadSession,复用相同权限与目标位置,验证是否能成功创建会话,排除代码实现问题。 - 尝试上传小文件(如1KB),排除文件大小引发的特殊权限限制。
- 使用Microsoft Graph Explorer直接调用
内容的提问来源于stack exchange,提问作者Mridul Kapil
相关产品推荐
相关产品推荐

