簡體   English   中英

上傳用戶照片 microsoft graph api 時出錯

[英]Error uploading user photo microsoft graph api

我使用應用程序權限流進行身份驗證,使用 API 權限 User.ReadWrite.All

我想使用存儲在單獨數據庫中的圖像更新/同步我們用戶的個人資料圖像。

出於調試目的,我從“old-skool”windows-forms 圖片框中的數據庫中檢索圖像。 然后圖像將使用以下代碼傳輸到 office 365:

 Dim pic = New MemoryStream
 PictureBox1.Image.Save(pic, Imaging.ImageFormat.Jpeg)

 Dim Photo = Await graphServiceClient.Users(TxtEmail.Text).Photo.Content.Request().PutAsync(pic)

這引發了一個例外:

Microsoft.Graph.ServiceException
  HResult=0x80131500
  Message=Code: ErrorItemNotFound
Message: The specified object was not found in the store., No photo with class 'IPM.UserPhoto.Preview' exists.

Inner error

  Source=Microsoft.Graph.Core
  StackTrace:
   at Microsoft.Graph.HttpProvider.<SendAsync>d__18.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Graph.BaseRequest.<SendRequestAsync>d__34.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Graph.BaseRequest.<SendStreamRequestAsync>d__32.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Firebird_Test_Photo.Form1.VB$StateMachine_5_BtnUpdateExchanhe_Click.MoveNext() in C:\Users\jodur.KREMER\source\repos\Firebird Test Photo\Firebird Test Photo\Form1.vb:line 125

下面用於將圖像檢索到圖片框的模擬代碼工作正常

Dim Photo = Await graphServiceClient.Users(TxtEmail.Text).Photo.Content.Request().GetAsync()
PictureBox2.Image = System.Drawing.Image.FromStream(Photo)

使用此函數檢索到的流中的照片更新也會導致相同的異常,因此我不懷疑無效流。

對這個問題有什么建議嗎?? C# 中的建議也是受歡迎的!

$httpClient = [System.Net.Http.HttpClient]::new()
$httpClient.DefaultRequestHeaders.Authorization = [String]::Format('Bearer {0}', $accessToken)
$uri = [System.Uri]::new("https://graph.microsoft.com/v1.0/users/$($AzUserUPN)/photo/$value")

# Prepare Content
$content = [System.Net.Http.ByteArrayContent]::new([System.IO.File]::ReadAllBytes($AzUserImage));
$content.Headers.ContentType = "image/jpeg";

$task = $httpClient.PutAsync($uri,$content)
$task.Wait()

暫無
暫無

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

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