使用 Microsoft Graph .NET SDK 更新用户个人资料照片
Update user profile photo with Microsoft Graph .NET SDK
我在使用 Microsoft.Graph .net SDK 在 Microsoft graph 中更新或设置用户个人资料图片时遇到问题。
场景:
存在用户(用户角色)的本机应用程序,包括允许用户更新其个人资料的用户个人资料页面。
使用了 Azure AD v2.0 端点并相应地完成了应用程序注册。应用程序被许多租户使用,因此我们在应用程序注册流程中包含管理员同意流程。
同意的范围是 User.ReadWrite
、Directory.AccessAsUser.All
、Directory.ReadWrite.All
和 User.ReadWrite.All
。
使用库上传用户个人资料图片时,我们预计 Content-Type
为 image/jpeg
per the documentation。然而,Fiddler 将 content-type
显示为 application/octet-stream
PUT /v1.0/me/photo/$value HTTP/1.1
SdkVersion: Graph-dotnet-1.7.0
Cache-Control: no-store, no-cache
Authorization: bearer //removed//
Content-Length: 1051534
Content-Type: application/octet-stream
Host: graph.microsoft.com
Connection: Keep-Alive
结果是 st运行ge,因为我认为它未被图表解释
{
"error": {
"code": "ErrorInternalServerError",
"message":
"An internal server error occurred. The operation failed., The value is set to empty\r\nParameter name: smtpAddress",
"innerError": {
"request-id": "5b549f03-1ce5-4c8c-a393-27aef3ed1a75",
"date": "2018-02-07T12:32:26"
}
}
}
我使用的代码如下所示:
if (_selectedPhoto != null)
{
using(IRandomAccessStream raStream = await _selectedPhoto.OpenReadAsync())
{
await graphClient
.Me
.Photo
.Content
.Request()
.PutAsync(raStream.AsStream());
}
}
我还克隆了 SDK repository 和 运行 单元测试 UserUpdatePhoto
,结果相同。
对应的方法如下。将内容类型更改为 image/jpeg
会导致 503 unknown error
。不确定这里的根本原因是什么。
public System.Threading.Tasks.Task<Stream> PutAsync(Stream content, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead)
{
this.ContentType = "application/octet-stream";
this.Method = "PUT";
return this.SendStreamRequestAsync(content, cancellationToken, completionOption);
}
根据评论,我检查了受影响用户的邮箱,发现邮箱配置存在问题。所以,问题只是由于缺少邮箱。
我在使用 Microsoft.Graph .net SDK 在 Microsoft graph 中更新或设置用户个人资料图片时遇到问题。
场景:
存在用户(用户角色)的本机应用程序,包括允许用户更新其个人资料的用户个人资料页面。
使用了 Azure AD v2.0 端点并相应地完成了应用程序注册。应用程序被许多租户使用,因此我们在应用程序注册流程中包含管理员同意流程。
同意的范围是 User.ReadWrite
、Directory.AccessAsUser.All
、Directory.ReadWrite.All
和 User.ReadWrite.All
。
使用库上传用户个人资料图片时,我们预计 Content-Type
为 image/jpeg
per the documentation。然而,Fiddler 将 content-type
显示为 application/octet-stream
PUT /v1.0/me/photo/$value HTTP/1.1
SdkVersion: Graph-dotnet-1.7.0
Cache-Control: no-store, no-cache
Authorization: bearer //removed//
Content-Length: 1051534
Content-Type: application/octet-stream
Host: graph.microsoft.com
Connection: Keep-Alive
结果是 st运行ge,因为我认为它未被图表解释
{
"error": {
"code": "ErrorInternalServerError",
"message":
"An internal server error occurred. The operation failed., The value is set to empty\r\nParameter name: smtpAddress",
"innerError": {
"request-id": "5b549f03-1ce5-4c8c-a393-27aef3ed1a75",
"date": "2018-02-07T12:32:26"
}
}
}
我使用的代码如下所示:
if (_selectedPhoto != null)
{
using(IRandomAccessStream raStream = await _selectedPhoto.OpenReadAsync())
{
await graphClient
.Me
.Photo
.Content
.Request()
.PutAsync(raStream.AsStream());
}
}
我还克隆了 SDK repository 和 运行 单元测试 UserUpdatePhoto
,结果相同。
对应的方法如下。将内容类型更改为 image/jpeg
会导致 503 unknown error
。不确定这里的根本原因是什么。
public System.Threading.Tasks.Task<Stream> PutAsync(Stream content, CancellationToken cancellationToken, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead)
{
this.ContentType = "application/octet-stream";
this.Method = "PUT";
return this.SendStreamRequestAsync(content, cancellationToken, completionOption);
}
根据评论,我检查了受影响用户的邮箱,发现邮箱配置存在问题。所以,问题只是由于缺少邮箱。