我在Azure门户中注册了一个应用程序并添加了2个API:Azure Active Directory和Microsoft Sharepoint Online以及一些权限。 我按照以下步骤进行操作:https://docs.microsoft.com/en-us/outlook/rest/java-tutorial#register-the-app。
问题是,当我使用Bearer令牌向Sharepoint API发出请求时,它会给我一个未经授权的错误:401 :
401未经授权 x-ms-diagnostics:3000006; reason ="令牌包含无效签名。&#34 ;; category =" invalid_client" {" error_description":"无效的发卡行或签名。"}
但是当我获得访问令牌时,我有这些范围:
" token_type":" Bearer","范围":" AllSites.Manage AllSites.Read AllSites.Write Mail.Read MyFiles.Read MyFiles 。写User.Read"
有什么想法吗?
答案 0 :(得分:1)
您可以看一下我完成的这个项目,该项目包装了一些可以使用Sharepoint Rest API执行的常见操作。它也是一个非常易于使用的API
答案 1 :(得分:0)
要获取SharePoint列表数据,我们可以使用Office 365 SDKs for Java来实现它。
或者您可以查看以下文章以通过身份验证。
答案 2 :(得分:0)
Francisco Valle 的回答不包括用户使用联合帐户的情况。当用户使用联合帐户时,无论尝试什么结果都是一样的:
Authentication Failure
<psf:error xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
<psf:value>0x80048821</psf:value>
<psf:internalerror><psf:code>0x80048821</psf:code>
<psf:text>AADSTS50126: Error validating credentials due to invalid username or password
这是因为当用户使用浏览器登录SharePoint时,总是会重定向到登录页面(类似这样:
<块引用>https://adfs.your_domain.com/adfs/ls/?username=your_user_name&wa=wsignin1.0&wtrealm=urn%3afederation%3aMicrosoftOnline&wctx=)
我还没有找到如何在 JAVA 中克服这种重定向的方法,只需在使用 REST API 时生成令牌/或 cookie 并传递它。