Microsoft Graph Api:权限不足,无法完成操作

Shi*_*Dor 5 json onedrive microsoft-graph-api

我正在尝试使用 Microsoft Graph 从 OneDrive 下载文件。我目前处于测试阶段,尚未编写任何代码。

这是我到目前为止所做的:

  1. 通过https://apps.dev.microsoft.com创建并注册应用
  2. 生成了一个秘密,启用了隐式流
  3. 为其提供了以下 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

    1. 使用code范围为offline_accessand的流Files.ReadWrite.All,得到一个代码,然后得到一个令牌。

    2. 使用此令牌通过/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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

添加用户 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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*eur 2

调用/users至少需要您有User.ReadBasic.AllUser.Read.All权限。由于您仅提出了请求Files.ReadWrite.All,因此您没有足够的权限通过其他用户的个人资料进行访问。

尝试不要使用范围:

User.Read.All+Files.ReadWrite.All+offline_access
Run Code Online (Sandbox Code Playgroud)

  • 难道不应该在这里提到吗:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/driveitem_list_children?:) (2认同)