如何获得用户的交换/ outlook / office365照片?

时间:2015-12-03 15:35:45

标签: c# asp.net outlook exchange-server office365

我们的公司在Office 365上。因此,当用户登录我的asp.net mvc网站时,我想像Outlook一样显示他们的照片。

Outlook在哪里获取用户的照片?以及如何以编程方式实现它?

我尝试过点击ActiveDirectory并获取thumbnailPhoto,但大多数用户都是空白。因此,Outlook必须将其纳入其他地方。在哪里以及如何?

我还看到了一些使用Microsoft.Office.Interop.Outlook程序集的示例(假设它需要安装Outlook才能运行)。但是,此网站运行的服务器上没有安装Outlook。

2 个答案:

答案 0 :(得分:6)

  

我已尝试点击ActiveDirectory并获取   thumbnailPhoto,但大多数用户都是空白的。因此,Outlook必须如此   把它带到别处。在哪里以及如何?

AD 内部部署中的用户照片 ,因为您的用户很可能首先没有将其存储在那里,除非您提供了它们使用将其写入AD的应用程序。

AD Azure 中提供了用户照片 ,因为您的用户最有可能在Outlook(或在线)中应用他们的照片。

我假设您的内部部署AD正在通过 Dirsync ADConnect 实用程序与Azure AD同步。如果是,那么实际上photothumbnailphoto属性仅以单向同步(从内部部署到Azure)并且不会被回写。参考here for DirSynchere for ADConnect

这就是为什么你无法将它从你的AD中删除。

  

如何获取用户的exchange / outlook / office365照片?

有很多方法可以从Azure AD获取照片:

  1. 使用GetUserPhoto操作进行Exchange Web服务(EWS):。基本上发送带有电子邮件地址和大小的SOAP信封。 XML响应将为您提供PictureData元素

  2. 中包含的base64编码照片
  3. Exchange Web服务(EWS托管API和/或REST API):基本上使用自动发现服务到网址https://outlook.office365.com/ews/exchange.asmx,然后通过EWS.Service.ConnectToService方法连接在您需要引用库的Microsoft.Exchange.WebServices.Data命名空间上(您可以download from here 的DLL)。方法保持不变GetUserPhoto,图像包含在二进制响应中。

  4. Outlook REST API:基本上在{{1}向Outlook API(带有承载访问令牌)发送GET请求您自己的,以及网址https://outlook.office.com/api/{version}/me/photo。您将获得二进制格式的照片流作为响应。不要忘记附加https://outlook.office.com/api/{version}/users/email@example.com/photo以获取blob,否则您将获得元数据。 More details referenced here.

  5. Office 365 Unified API(又名图表):基本上与旧版API几乎相同。将$value请求(带有持票人令牌)发送到您自己照片的网址GET,并为另一个用户发送https://graph.microsoft.com/{version}/me/photo/。或多或少相同。 More details referenced here。您还可以a sandbox here来探索示例和API参考。您也可以自己尝试online interactively here不要忘记在解除获取请求之前登录

  6. 希望有所帮助。

    更多参考文献:hereherehere

答案 1 :(得分:0)