我正在开发一个相当简单的应用程序,它使用 REST Office 365 API 从 SharePoint 检索文件。这是一个在后台运行的批处理作业,没有用户界面,因此我正在执行以下简单的两步流程:
(1) 从 Azure AD 请求访问 token (提供客户端 ID、客户端 key 、资源和 grant_type=client_credentials)
(2) 使用“Authorization: Bearer”作为请求 header 调用 SharePoint API (https://{base url}/_api/v1.0/Files
)。
这个过程看起来非常简单,听起来也很简单,但我不断收到以下错误:
401 Unauthorized
x-ms-diagnostics: 3001000;reason="There has been an error authenticating the request.";category="invalid_client"
知道问题是什么以及如何解决吗?我已经坚持这个问题好几天了。我真的很感谢有人对此提供帮助。谢谢。
最佳答案
SharePoint Online 尚不支持客户端使用仅应用程序 token (由客户端凭据 OAuth2 流产生)访问它。它仅支持委托(delegate) token ,即用户+应用程序 token (由授权代码 OAuth2 流产生)。
因此,如果您希望编写一个在线访问 SharePoint 的客户端应用程序(Web 应用程序或 native 客户端应用程序) - 它只能代表用户,并且必须涉及用户的交互式身份验证 - 在用户进行身份验证之后- 他们将看到一个同意页面,他们需要同意您的应用程序代表他们访问 O365 API。
只有邮件/日历/联系人 API (Exchange Online) 支持客户端使用仅应用程序 token 访问它们 - 并且他们最近才启用此支持。在此处阅读有关使用 Exchange Online API 的客户端凭据流 token 的信息:http://blogs.technet.com/b/ad/archive/2015/02/04/using-azure-ad-to-build-daemon-applications-that-call-office-365-apis.aspx , http://blogs.msdn.com/b/exchangedev/archive/2015/01/22/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx
希望这有帮助。
ps:OAuth2 客户端凭据流程不发出刷新 token
关于rest - 使用 Office 365 REST API OAuth access_token 时出现 SharePoint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355152/