[英]REST client sample to update thumbnail Photo using Azure AD Graph api?
我正在尋找一個示例REST客戶端,該客戶端可以使用Azure AD圖形API更新用戶縮略圖嗎? REST客戶端可以在那里使用並且可以正常使用https://msdn.microsoft.com/zh-cn/library/azure/ad/graph/api/users-operations#GetUserThumbnailPhoto
我嘗試了此示例Java Rest Client,但收到405-不允許的方法:
public void updateUserPhotoGraph(ModelMap model) throws IOException {
//https://graph.windows.net/{tenant}/users/{user}/thumbnailPhoto?api-version=1.6
UriComponents uriComponents = getPhotoUri();
String bearerToken = getBearerToken();
try {
HttpClient httpclient = HttpClients.createDefault();
byte[] bytesEncoded = Base64.encode(extractBytes());
URIBuilder builder = new URIBuilder(uriComponents.toString());
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + bearerToken);
request.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM);
request.setEntity(new ByteArrayEntity(bytesEncoded));
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
**也將以上內容更改為發送了PATCH請求,但出現了相同的錯誤。
是否有人使用此API更新了thumnailphoto?
我們可以使用[ https://graph.windows.net/ {tenant} / users / {user} /thumbnailPhoto?api-version=1.6]更新/設置縮略圖照片嗎?
什么是正確的API?
在上述答案的幫助下,我在c#中得到了一個可行的解決方案。 當使用以下變量調用時,此方法有效:
nuget:ADAL v2.19。
authContext = new AuthenticationContext(“ https://login.microsoftonline.com/ ” +租戶)
Globals.aadGraphResourceId =“ https://graph.windows.net/ ”
憑據=新的ClientCredential(clientId,clientSecret)
api =“ /用戶/” + objectId +“ / thumbnailPhoto”
希望能幫助到你!
private async Task<string> UploadByteArray(string api, byte[] byteArray)
{
// NOTE: This client uses ADAL v2, not ADAL v4
AuthenticationResult result = authContext.AcquireToken(Globals.aadGraphResourceId, credential);
HttpClient http = new HttpClient();
string url = Globals.aadGraphEndpoint + tenant + api + "?" + Globals.aadGraphVersion;
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, url);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
request.Content = new System.Net.Http.ByteArrayContent(byteArray);
request.Content.Headers.Add("Content-Type", "application/octet-stream");
HttpResponseMessage response = await http.SendAsync(request);
if (!response.IsSuccessStatusCode)
{
string error = await response.Content.ReadAsStringAsync();
object formatted = JsonConvert.DeserializeObject(error);
throw new WebException("Error Calling the Graph API: \n" + JsonConvert.SerializeObject(formatted, Formatting.Indented));
}
return await response.Content.ReadAsStringAsync();
}
查看此文檔時 ,您可能會發現“ thumbnailPhoto”屬性是流類型並且可以使用PATCH,因此您可以嘗試使用以下api來更新該屬性:
https://graph.windows.net/{tenant}/directoryObjects/{user}/Microsoft.DirectoryServices.User/thumbnailPhoto?api-version=1.5
我能夠使用PUT
操作將Jpeg縮略圖上傳到網址: https://graph.windows.net/{tenant}/users/{user object id}/thumbnailPhoto?api-version=1.6
: https://graph.windows.net/{tenant}/users/{user object id}/thumbnailPhoto?api-version=1.6
內容類型標頭需要設置為application/octet-stream
,內容只是二進制Jpeg數據。
我的代碼在Swift中,所以在這里不顯示它,但是我假定給出了這些信息,因此創建合適的Java代碼應該不太困難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.