繁体   English   中英

使用Microsoft Graph .NET SDK更新用户个人资料照片

[英]Update user profile photo with Microsoft Graph .NET SDK

我在使用Microsoft.Graph .net SDK更新或设置Microsoft图形中的用户个人资料图片时遇到问题。

场景:

显示带有用户(用户角色)的本机应用程序,其中包括允许用户更新其个人资料的用户个人资料页面。

已使用Azure AD v2.0终结点并已完成应用程序注册。 应用程序被许多租户使用,因此,我们的应用程序注册流程中包含“管理同意”流程。

同意的范围是User.ReadWriteDirectory.AccessAsUser.AllDirectory.ReadWrite.AllUser.ReadWrite.All


使用该库上传用户个人资料图片时, 根据文档 ,我们希望Content-Typeimage/jpeg 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

结果很奇怪,因为我认为它的未命中由图形解释

{
  "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存储库,并以相同的否定结果运行了单元测试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);
}

根据评论,我检查了一个受影响用户的邮箱,邮箱设置存在问题。 因此,表明缺少SMTP地址是正确的,并且该问题仅是由于缺少邮箱造成的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM