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

使用Microsoft Graph REST API访问OneDrive共享文件夹子项遇404错误

我之前做OneDrive集成的时候也踩过这个坑,咱们一步步来排查解决:

最可能的原因:用错了ID!

从GET /me/drive/sharedWithMe返回的条目,本质上是你自己OneDrive里的共享“占位符”,而不是实际的共享文件夹本身。你需要从返回项的remoteItem属性里取真实的ID:

  • 实际共享文件夹所在的Drive ID:item.remoteItem.driveId
  • 实际共享文件夹的ID:item.remoteItem.id

举个例子,假设sharedWithMe返回的结构是这样的:

{
  "id": "user-drive-shared-placeholder-id", // 这个是你自己Drive里的占位符ID,不能用来查子项
  "remoteItem": {
    "id": "actual-shared-folder-id", // 这个才是真实的文件夹ID
    "driveId": "owner-drive-id", // 文件夹所属的Drive ID
    "folder": { "childCount": 5 }
  }
}

你应该用owner-drive-id和actual-shared-folder-id来构建请求:

GET https://graph.microsoft.com/v1.0/drives/owner-drive-id/items/actual-shared-folder-id/children

如果误用了user-drive-shared-placeholder-id,肯定会返回404,因为这个占位符不是真正的文件夹,没有子项。

第二步:检查权限是否足够

访问他人共享的文件夹子项,需要比基础权限更高的范围:

  • 确保你的应用在Azure AD中注册时,添加了委托权限的Files.Read.All或者Files.ReadWrite.All(注意:应用权限无法访问sharedWithMe的内容,必须用委托权限)
  • 解码你的访问Token(可以用jwt.ms工具),确认scp字段里包含对应的权限(比如Files.Read.All)

其他排查点

  • 确认共享文件夹没有被删除或撤销权限:如果对方已经取消共享,sharedWithMe可能还会返回缓存的条目,但实际访问会失败
  • 用Graph Explorer测试:先调用/me/drive/sharedWithMe拿到正确的remoteItem信息,再手动调用子项接口,验证是否能成功。如果Explorer能成功,那问题大概率出在你的代码里(比如ID取错了)
  • 检查API版本:确保用的是v1.0,beta版本可能有兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:18:16