MS Graph API:OneDrive资源未找到

4
我正在构建一个Windows服务,通过使用此方法连接到OneDrive for Business的Graph API: https://graph.microsoft.io/en-us/docs/authorization/app_only 我已成功认证我的应用程序,并获得了调用Graph API的令牌。 我已授予我的Azure AD应用程序对Windows Azure Active Directory和Microsoft Graph的权限(为两者选择了所有应用程序和委派权限)。
我的目标是获取驻留在特定用户的OneDrive中的文件夹内容。 我需要进行以下Graph API调用:
//graph.microsoft.com/v1.0/users('user-guid')/drive/items/long-item-id-here/children

我可以使用Microsoft Graph Explorer(使用我的Office 365凭据登录)成功执行此请求。但是,当我尝试以应用程序的身份进行相同的调用时(使用上面接收到的身份验证令牌),我会收到一个“itemNotFound”代码和消息“找不到资源”(请求ID:5e814dce-c4c2-4615-90e6-ea8ab90cbc49)。然而,我能够查询根目录,“folder.childCount”属性显示根目录中子项的正确数量:

//graph.microsoft.com/v1.0/users('user-guid')/drive/root

我已将文件夹的共享设置为“所有经过身份验证的用户”,但在API调用中仍然收到“找不到资源”的消息。您有什么想法我错过了什么吗?

你看过这个页面上的文档了吗:https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/item_list_children - carey walker
2个回答

6
标记的答案不再适用。现在您可以使用客户端凭据授权(又称“仅应用”)访问OneDrive和SharePoint资源。
适用的范围为Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All

对于OneDrive Business,可能需要在Azure AD/Office 365门户中显式允许访问Office 365 Sharepoint Online API。 - PeterXX

3
该应用程序正在使用仅应用授权,目前不支持通过Microsoft Graph API访问OneDrive for Business。请使用委派流程,该流程由Graph Explorer使用。

如果我理解委托流程的工作方式(身份验证令牌+刷新令牌),似乎这对于我的 Windows 服务不太适用,因为该调用可能每天只会发生一次...到那时,访问令牌和刷新令牌都已过期。建议的方法是持续获取刷新令牌,以便访问令牌永不过期吗? - baparks
刷新令牌是一种选项,只有在您的情况符合 cloudidentity.com/blog/2015/03/20/azure-ad-token-lifetime 中描述的某些条件时才提供。另一个选项是使用OAuth2密码流(grant_type=password),通过提供用户名和密码可以获得访问令牌。 - Sriram Dhanasekaran-MSFT
OAuth2密码流选项可用。谢谢您的帮助,Sriram先生。 - baparks
糟糕!OneDrive 什么时候才能支持 App-only 授权啊?SharePoint 已经支持了吗? - Nicholas DiPiazza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接