使用 Graph API 访问与我共享的项目给出 401 Unauthorized

Accessing Shared with Me item using Graph API gives 401 Unauthorized

我是第一次发帖提问,如果我的措辞很奇怪请见谅。
我的参考资料是这个文档:https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/drive_sharedwithme
我想获取登录用户的 'Shared with Me' 项列表,并提供一个包含 downloadUrl 的按钮来下载列表项。问题是我无法获取 downloadUrl。
我正在做的是:
1。请求 GET /me/drive/sharedWithMe 本次调用成功,响应与文档中大致相同。 这是回复的一部分:

object(stdClass)#3 (6) {
      ["@odata.type"]=>
      string(26) "#microsoft.graph.driveItem"
      ["createdDateTime"]=>
      string(20) "0001-01-01T00:00:00Z"
      ["id"]=>
      string(34) "01TWWV5W37UJKHFIUBZZBZDEHOJNVOEZVP"
      ["lastModifiedDateTime"]=>
      string(20) "2016-05-20T05:39:00Z"
      ["remoteItem"]=>
      object(stdClass)#4 (5) {
        ["file"]=>
        object(stdClass)#5 (0) {
        }
        ["id"]=>
        string(34) "01TWWV5W37UJKHFIUBZZBZDEHOJNVOEZVP"
        ["name"]=>
        string(7) "2NF.PNG"
        ["parentReference"]=>
        object(stdClass)#6 (1) {
          ["driveId"]=>
          string(66) "b!XxxqXZ1tqUGbTG6lCAZp8lCk94i3qvhJt1qf0GJTLQf11toCmqOoS4hkfSFKzG0F"
        }
        ["size"]=>
        int(0)
      }
      ["size"]=>
      int(0)
    }

从响应中我得到了项目的 "driveId" 和 "id"。它们将在步骤 2 中使用。

2.请求GET /drives/<remoteItem.driveId>/items/<id>
这就是我获取 downloadUrl 的方式,但是这个调用给了我这个 401 Unauthorized 错误响应:

{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":"Access denied. You do not have permission to perform this action or access this resource.","innerError":{"request-id":"64f90e20-92a4-4002-8833-da5de026c076","date":"2016-05-27T10:30:58"}}}


为了解决这个问题,我尝试启用一些权限:Files.Read.All & Sites.Read.All .
这是我解码的一部分 access_token 以查看我所有启用的权限

scp: "Calendars.ReadWrite Contacts.ReadWrite Directory.ReadWrite.All Files.Read Files.Read.All Files.ReadWrite Group.ReadWrite.All Mail.ReadWrite Mail.Send Sites.Read.All User.Read User.Read.All User.ReadWrite",


我在这里被问到的是:为什么它给我 401 未经授权的错误?以及如何修复它?

提前致谢,抱歉水平代码部分太长,英语不好。

当通过 sharedWithMe 查找项目以引用项目时,您应该使用返回项目的 ID,而不是远程项目引用信息。

sharedWithMe 返回的项目是 OneDrive 中到实际项目的特殊隧道,其信息在 remoteItem facet 中提供。

为了更好的可读性,这里有一个示例 json 由 SharedWithMe 返回的项目:

{
    "id": "DA5D51067000136E!303",
    "remoteItem": {
        "id": "8BF6000DBC6C4A4C!3275",
        "parentReference": {
            "driveId": "8bf6000dbc6c4a4c"
        }
    }
}

要检索项目信息的内容,请在默认驱动器上使用以下 GET 请求

GET /drive/items/DA5D51067000136E!303

我在 Microsoft Graph api 的 github 中提问,并在那里找到了我的答案。
这是 link
导致 401 Unauthorized 错误的原因是我的用户帐户无权访问 http://mytenant.sharepoint.com/ .
现在已获得许可,我再次请求步骤 2。响应包含我需要的 downloadUrl。
感谢您的回答,抱歉占用您的时间。