更新:我收到 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
然后我按照文档进行操作客户凭证流程 https://learn.microsoft.com/azure/active-directory/develop/active-directory-v2-protocols-oauth-client-creds,包括给予管理员同意该应用程序在我的公司租户中使用。
我已成功收到访问令牌。收到访问令牌后,我仔细检查了jwt.io http://jwt.io该令牌实际上包含所有范围(包括。Files.ReadWrite.All
).
我可以使用此访问令牌来获取任何用户的驱动器并列出任何用户文件(上面列出的前两个端点)。我还尝试获取任何工作正常的用户文件的缩略图。但是,一旦我尝试下载文件、向文件添加权限或创建共享链接(上面列出的最后三个端点),我就会收到401 Unauthorized
错误。由此,我假设范围Files.Read.All
工作正常,但范围Files.ReadWrite.All
不管用。
至于我能从中了解到什么范围文档 https://graph.microsoft.io/en-us/docs/authorization/permission_scopes,我尝试使用的范围应该可以工作。它的“仅应用程序权限需要管理员同意”部分,它描述了Files.ReadWrite.All
as:
允许应用在没有登录用户的情况下读取、创建、更新和删除所有网站集中的所有文件。
我碰壁了。对于我缺少的仅应用程序访问,新的 v2.0 OAuth 令牌和/或 Microsoft Graph 是否存在限制?