来自Java的Sharepoint Online API连接

时间:2018-02-22 14:43:24

标签: java sharepoint token office365api azureportal

我在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"

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以看一下我完成的这个项目,该项目包装了一些可以使用Sharepoint Rest API执行的常见操作。它也是一个非常易于使用的API

https://github.com/kikovalle/PLGSharepointRestAPI-java

答案 1 :(得分:0)

要获取SharePoint列表数据,我们可以使用Office 365 SDKs for Java来实现它。

或者您可以查看以下文章以通过身份验证。

SharePoint REST API Authentication from 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 并传递它。