我的目标是编写一些代码,以使Office 365用户能够通过REST API访问OneDrive for Business中的文件。我已经在Azure AD(Web应用程序/多租户)中注册了一个应用程序,并添加了访问SharePoint Online的权限。我想使用“使用OAuth委派用户身份”方案,其中我的应用使用用户模拟通过REST API访问OneDrive for Business。
应用清单中的权限如下所示:
“ oauth2Permissions”:[{“ adminConsentDescription”:“允许应用程序代表已登录的用户访问AppName。”,“ adminConsentDisplayName”:“ AppName”,“ id”:“ xxx”,“ isEnabled”:true, “ origin”:“ Application”,“ type”:“ User”,“ userConsentDescription”:“允许应用程序代表您访问AppName。”,“ userConsentDisplayName”:“ AppName”,“ value”:“ user_impersonation”}
该应用程序请求(OneDrive for Business)用户登录Office365以获取授权码(发送到注册的重定向URL)并使用它来检索访问令牌(通过POST到我的应用程序的令牌端点)。返回的JWT中的“ aud”字段设置为我的客户端ID。对于SharePoint Online,应该是类似于“ 00000003-0000-0ff1-ce00-000000000000”的内容吗?
当我尝试在https:// {tenant} -my.sharepoint.com/_api/v1.0/me/中使用访问令牌作为请求标头中的承载来发出GET时,出现错误401: “错误:无效的客户端”,“错误:无效的受众URI:https:// {tenant} -my.sharepoint.com/”。这指向某处的配置错误,但我无法弄清楚需要更改什么。
aud =令牌的受众。将令牌发布给客户端应用程序时,访问者是客户端的client_id。您可能想要尝试使用Discovery Service API来检查服务端点(https://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints)。错误显示受众URI无效,因此该服务可能未在您进行呼叫的URL上运行(即https:// {tenant} -my.sharepoint.com/_api/v1.0/me/ )。遵循上面的链接应该可以帮助您解决问题。希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句