【发布时间】:2017-07-15 07:28:26
【问题描述】:
更新:我已收到 Microsoft 的通知,指出此问题是 Graph API 中的错误。他们正在研究解决方案。
我正在使用新的 v2.0 OAuth 流程对我的应用进行身份验证,以便与 Microsoft Graph 一起使用,使其能够列出任何用户文件、在任何用户 OneDrive 中下载和上传文件以及设置文件权限。这无需用户登录,即作为服务帐户/守护程序运行。
我在新的应用程序注册门户中设置了一个新的“融合应用程序”。我已经设置了所有必要的范围/应用程序权限,包括Files.ReadWrite.All。 (我实际上检查了所有可能的框......)。在 Microsoft Graph 文档中,这应该是调用我感兴趣的端点时唯一需要的范围:
/v1.0/users/{userID}/drive
/v1.0/users/{userID}/drive/items/{ItemID}/children
/v1.0/users/{userID}/drive/items/{ItemID}/content
/v1.0/users/{userID}/drive/items/{ItemID}/invite
/v1.0/users/{userID}/drive/items/{ItemID}/createLink
然后,我遵循了 Client Credentials flow 的文档,包括授予该应用的管理员同意,以便在我的公司租户中使用。
我已成功收到访问令牌。收到访问令牌后,我在jwt.io 仔细检查了该令牌实际上包含所有范围(包括Files.ReadWrite.All)。
我可以使用此访问令牌来获取任何用户的驱动器并列出任何用户文件(上面列出的前两个端点)。我还尝试获取任何工作正常的用户文件的缩略图。但是,一旦我尝试下载文件、向文件添加权限或创建共享链接(上面列出的最后三个端点),我就会收到 401 Unauthorized 错误。由此,我假设范围 Files.Read.All 工作正常,但范围 Files.ReadWrite.All 不工作。
至于我可以从Scopes documentation 中理解的内容,我尝试使用的范围应该可以工作。在“需要管理员同意的应用程序权限”部分,它将Files.ReadWrite.All 描述为:
允许应用在没有登录用户的情况下读取、创建、更新和删除所有网站集中的所有文件。
我碰壁了。新的 v2.0 OAuth 令牌和/或 Microsoft Graph 是否存在关于我缺少的仅限应用程序访问的限制?
【问题讨论】:
-
您找到解决方案了吗?我现在也很想尝试 :) 我会随时告诉你我的经历如何......
标签: azure-active-directory microsoft-graph-api onedrive