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

调用CreateUploadSession接口返回403错误的排查求助

解决POST /sites/{siteId}/drive/items/{itemId}/createUploadSession返回403的问题
  • 权限范围要落地验证
    别光看权限列表打勾,得确认权限是真的生效了。用Delegated权限的话,要确保登录用户本身有目标站点/文件夹的访问权限;用Application权限的话,检查Azure AD里管理员是不是真的批了权限,有些权限必须管理员同意才有用,没审批的话权限就是摆设。

  • 确认目标itemId的类型和权限
    createUploadSession是用来往文件夹传文件或者覆盖已有文件的,先搞清楚{itemId}是文件夹还是文件:

    • 如果是文件夹,得确保你有这个文件夹的写入权限;
    • 如果是文件,得有修改/覆盖权限。
      可以先调用GET /sites/{siteId}/drive/items/{itemId}接口测一下,能返回200才说明你能访问这个资源。
  • 检查请求体参数
    别忽略请求体里的@microsoft.graph.conflictBehavior参数:如果设成fail但目标文件已经存在,而你又没覆盖权限,直接就403了。另外确保请求体格式正确,比如:

    {
      "item": {
        "@microsoft.graph.conflictBehavior": "rename",
        "name": "largefile.dat"
      }
    }
    

    格式错了也可能触发权限系统误判。

  • 验证令牌的有效性
    用jwt.ms解析你的access_token,确认这几点:

    • aud字段是https://graph.microsoft.com,别拿到个人版OneDrive的令牌去调用商业版站点接口;
    • scp(Delegated权限)或roles(Application权限)里包含你需要的权限,比如Sites.ReadWrite.All、Files.ReadWrite.All。
  • 确认站点和驱动器的关联
    有些站点可能没有默认文档库,或者你指定的drive不是该站点的默认库,也会导致权限不匹配。可以调用GET /sites/{siteId}/drives验证驱动器是否存在,以及你有没有访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:10:37