【发布时间】:2018-05-29 14:59:00
【问题描述】:
我正在尝试使用 Microsoft Graph 从 OneDrive 下载文件。我目前处于测试阶段,还没有写任何代码。
这是我到目前为止所做的:
- 通过https://apps.dev.microsoft.com创建并注册了一个应用程序
- 生成了一个秘密,启用了隐式流
-
为其提供了以下 Microsoft Graph 权限列表:
委托:
Files.ReadWrite.All、offline_access、Group.ReadWrite.All、Directory.ReadWriteAll、User.ReadWriteAll应用程序:
Directory.ReadWrite.All、Files.ReadWrite.All、Group.ReadWrite.All、User.ReadWrite.All使用
code流,范围为offline_access和Files.ReadWrite.All,获得代码和令牌。-
使用此令牌通过
/me驱动器下载文件效果很好(/v1.0/me/drive/items/itemid/content),但是当我尝试下载或仅查询其他用户时,我得到了权限不足的错误。
调用https://graph.microsoft.com/v1.0/users得到响应:
{
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"request-id": "cee06586-12af-4768-9135-b9709d7ecb5d",
"date": "2018-05-29T14:45:48"
}
}
}
当我添加用户 ID 时也会发生同样的情况。当我要求获取用户的设备时,我得到“未找到”响应。
我看到一些类似问题的答案说我应该通过 Azure 门户将我的应用程序的权限添加到 Azure Active Directory,但我的应用程序仅列在“企业应用程序”部分中,我在我可以添加权限的“应用注册”部分,在企业应用程序部分我无法添加任何权限,只能搜索。
注意:我的用户 ID 是 Azure 门户中的全局管理员。该用户也是创建并拥有该应用程序的用户。
知道我在这里可能缺少什么吗?
谢谢
编辑:
我取得了一些进展,我尝试通过 Azure 门户而不是应用程序门户创建应用程序。现在它显示在应用注册页面中,因此我可以为其添加权限。
所以现在我可以查看所有用户,但是当我尝试查看他们的驱动器时,我得到“未找到”响应:
调用https://graph.microsoft.com/v1.0/users/userid/drive返回响应:
{
"error": {
"code": "itemNotFound",
"message": "The resource could not be found.",
"innerError": {
"request-id": "ec6ed197-15ea-498a-80d0-e2a9f832a0b9",
"date": "2018-05-29T15:49:18"
}
}
}
【问题讨论】:
-
您的用户可以访问其他人的驱动器吗?您通过授权码流获得的令牌是应用+用户,这意味着应用和用户都必须有权访问资源才能获得访问权限。
-
您还可以在jwt.ms 再次检查访问令牌是否包含必要的范围,但如果范围无效,/me/drive 调用应该会失败。
-
@juunas - 据我了解,我的用户是全局管理员,因此应该能够访问其他人的驱动器。我该如何检查?
-
对,这很奇怪。您可以尝试使用图形资源管理器graph.microsoft.io
标签: json microsoft-graph-api onedrive