我们的公司在Office 365上。因此,当用户登录我的asp.net mvc网站时,我想像Outlook一样显示他们的照片。
Outlook在哪里获取用户的照片?以及如何以编程方式实现它?
我尝试过点击ActiveDirectory并获取thumbnailPhoto,但大多数用户都是空白。因此,Outlook必须将其纳入其他地方。在哪里以及如何?
我还看到了一些使用Microsoft.Office.Interop.Outlook程序集的示例(假设它需要安装Outlook才能运行)。但是,此网站运行的服务器上没有安装Outlook。
答案 0 :(得分:6)
我已尝试点击ActiveDirectory并获取 thumbnailPhoto,但大多数用户都是空白的。因此,Outlook必须如此 把它带到别处。在哪里以及如何?
AD 内部部署中的用户照片 ,因为您的用户很可能首先没有将其存储在那里,除非您提供了它们使用将其写入AD的应用程序。
AD Azure 中提供了用户照片 ,因为您的用户最有可能在Outlook(或在线)中应用他们的照片。
我假设您的内部部署AD正在通过 Dirsync 或 ADConnect 实用程序与Azure AD同步。如果是,那么实际上photo
或thumbnailphoto
属性仅以单向同步(从内部部署到Azure)并且不会被回写。参考here for DirSync和here for ADConnect。
这就是为什么你无法将它从你的AD中删除。
如何获取用户的exchange / outlook / office365照片?
有很多方法可以从Azure AD获取照片:
使用GetUserPhoto操作进行Exchange Web服务(EWS):。基本上发送带有电子邮件地址和大小的SOAP信封。 XML响应将为您提供PictureData元素
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
,图像包含在二进制响应中。
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.
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(不要忘记在解除获取请求之前登录)
希望有所帮助。
答案 1 :(得分:0)