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

如何使用Microsoft Graph API获取OneDrive文件ID及BadRequest错误解决

问题分析与解决方案

我来帮你解决这个问题,先拆解下错误原因,再给出正确的操作步骤:

错误根源

你收到的"Empty Payload. JSON content expected."错误,主要有两个原因:

  1. HTTP请求方法用错了:你可能误用了POST/PUT这类需要提交JSON请求体的方法,而实际上查询文件元数据应该用GET请求,GET不需要发送任何payload。
  2. 路径空格未编码:OneDrive路径中的空格必须做URL编码(替换为%20),否则API无法正确解析路径。

正确获取文件ID的步骤

1. 使用GET请求方法

一定要用GET请求发起查询,这是获取文件元数据的标准方法,不需要附带任何JSON请求体。

2. 修正URL的路径编码

把原路径中的空格替换为%20,修正后的请求URL如下:

https://graph.microsoft.com/v1.0/me/drive/root:/Folder1/SubFolder2/SubFolder%202a/TestFile.xlsx

3. 完整请求示例

  • 请求方法:GET
  • 请求URL:https://graph.microsoft.com/v1.0/me/drive/root:/Folder1/SubFolder2/SubFolder%202a/TestFile.xlsx
  • 必填请求头:
    • Authorization: Bearer {你的访问令牌}(令牌需要具备Files.Read或Files.ReadWrite权限)

4. 提取文件ID

成功请求后,响应的JSON数据里的id字段就是你需要的文件ID。示例响应如下:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('user-id')/drive/root/$entity",
  "id": "01XYZABC123DEF456GHI789JKL012MNO345",
  "name": "TestFile.xlsx",
  "file": {
    "mimeType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    "hashes": {
      "quickXorHash": "abc123def456"
    }
  }
}

额外排查建议

如果还是遇到问题,可以检查:

  • 访问令牌的权限是否足够:确保令牌包含Files.Read或更高权限(可以通过解码令牌查看权限范围)
  • 路径拼写是否完全正确:确认文件夹、文件名的大小写、层级和OneDrive中的实际存储完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:42:42