c#如何使用microsoft graph api获取office 365用户照片

时间:2017-02-09 01:24:33

标签: c# microsoft-graph office365api outlook-restapi office365-restapi

我希望能够在Azure Active目录中获取所有用户的office365照片。

现在我可以使用图形SDK

获取当前用户的电子邮件
GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient();

public async Task<string> GetMyEmailAddress(GraphServiceClient graphClient)
    {          
        User me = await graphClient.Me.Request().Select("mail,userPrincipalName").GetAsync();
        return me.Mail ?? me.UserPrincipalName;
    }

但我不确定如何将the getting photos part中的https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/profilephoto_get整合到代码中。

赞赏任何帮助或代码示例!!

3 个答案:

答案 0 :(得分:1)

您使用graphClient.Me.Photo.Content获取照片,该照片将在视频流中检索照片的二进制数据:

 public async Task GetPictureAsync()
 {
     GraphServiceClient graphClient = GetGraphServiceClient();

     var photo = await graphClient.Me.Photo.Content.Request().GetAsync();
     using (var fileStream = File.Create("C:\\temp\\photo.jpg"))
     {
         photo.Seek(0, SeekOrigin.Begin);
         photo.CopyTo(fileStream);
     }
 }

答案 1 :(得分:0)

这有助于获取图像

/////////////////////////////////获取照片///////////// ///////

GraphServiceClient graphServiceClient = GetAuthenticatedGraphServiceClient();

流照片=等待graphServiceClient.Me.Photo.Content.Request()。GetAsync();

如果(照片!= null)

{
   MemoryStream ms = new MemoryStream();
   photo.CopyTo(ms);
   byte[] buffer = ms.ToArray();
   string result = Convert.ToBase64String(buffer);
   string imgDataURL = string.Format("data:image/png;base64,{0}", result);
   ViewBag.ImageData = imgDataURL;
}
else
  {
     ViewBag.ImageData = "";
  }

enter image description here

答案 2 :(得分:-2)

如果您转到图表资源管理器:https://developer.microsoft.com/en-us/graph/graph-explorer 您可以使用您的电子邮件地址登录。您应该看到“我的照片”查询选项。有一个文档链接带你到这里: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/profilephoto_get 您将看到一个表格,表明这仅适用于学校或工作帐户 - 而不适用于您的个人Microsoft帐户。