使用 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。
感谢您的回答,抱歉占用您的时间。
我是第一次发帖提问,如果我的措辞很奇怪请见谅。
我的参考资料是这个文档: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。
感谢您的回答,抱歉占用您的时间。