簡體   English   中英

使用Outlook REST API獲取照片時獲取401-未授權-Java cliet

[英]Getting 401-Unauthorized while getting photo using outlook REST API - java cliet

我正在嘗試使用Outlook REST API檢索用戶照片( https://msdn.microsoft.com/zh-cn/office/office365/api/photo-rest-operations#UserphotooperationsGetphoto

我獲得了以下訪問令牌( https://msdn.microsoft.com/zh-cn/library/azure/dn645543.aspx

但收到此錯誤:有幫助嗎?

HTTP / 1.1 401未經授權[內容長度:0,服務器:Microsoft-IIS / 8.0,請求ID:6925fcab-9021-4059-af4b-4cbf130faea7,X-CalculatedBETarget:CY1PR0401MB1388.namprd04.prod.outlook.com,X- BackEndHttpStatus:401,Set-Cookie:exchangecookie = 87cb2447eae9401c80a96c497dff06a9; expires =星期六,2017年4月22日7:56:53 GMT; 路徑= /; HttpOnly,x-ms-diagnostics:2000001; reason =“使用認證方法獲取訪問令牌,該方法太弱而無法允許對此應用程序進行訪問。目前的身份驗證強度為1,要求為2。” ;; error_category =“ invalid_token” ,

代碼看起來像這樣:

HttpClient httpclient = HttpClients.createDefault();

final String bearerToken = getBearerToken();
HttpGet request = new HttpGet("https://outlook.office.com/api/v2.0/me/photo/$value");
request.setHeader(javax.ws.rs.core.HttpHeaders.AUTHORIZATION, "Bearer " + bearerToken);
request.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);

HttpResponse response = httpclient.execute(request);
return IOUtils.toByteArray(response.getEntity().getContent());

根據錯誤信息。 您需要一個client_assertion來代替請求正文中的client_secret

有關更多詳細信息,您可以使用Office 365 Mail,Calendar和Contacts API引用博客Building Daemon或Service Apps(OAuth2客戶端憑據流)

根據API,您將其稱為“ https://outlook.office.com/api/v2.0/me/photo/ $ value”。 看來您只想為當前登錄用戶獲取照片; 如果是這樣,則可以使用“ 授權代碼授予流”來獲取不需要客戶端證書的令牌。

UPDATE#1

可以通過編程/ API方式完成嗎

據我所知,同意書需要用戶或管理員的互動。

https://login.windows.net/common/oauth2/authorize?response_type=code&client_id={0}&resource={1}&redirect_uri={2}&prompt={3}

在此處輸入圖片說明

如果要開發ASP.NET Web應用程序,則可以引用示例項目O365-WebApp-MultiTenant

順便說一句,當使用應用令牌調用API時,您需要指定用戶名。

例如

https://outlook.office.com/api/v2.0/users('user1@customdomain.onmicrosoft.com')/messages

UPDATE#2

使用應用令牌更新照片時的403代碼是預期結果。 在此處輸入圖片說明

從上圖可以看出,更新用戶照片需要委派權限“ User.Read.Write”。 應用令牌沒有更新用戶照片的權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM