[英]How to get user's exchange/outlook/office365 photo?
我们公司在Office 365上。所以当用户登录我的asp.net mvc网站时,我想显示他们的照片,就像Outlook一样。
outlook在哪里获取用户的照片? 以及如何以编程方式实现它?
我试过点击ActiveDirectory并获取thumbnailPhoto,但对于大多数用户来说这是空白的。 因此,Outlook必须将其纳入其他地方。 在哪里以及如何?
我还看到了一些使用Microsoft.Office.Interop.Outlook程序集的示例(假设它需要安装Outlook才能运行)。 但是,此网站在未安装Outlook的服务器上运行。
我试过点击ActiveDirectory并获取thumbnailPhoto,但对于大多数用户来说这是空白的。 因此,Outlook必须将其纳入其他地方。 在哪里以及如何?
用户照片在您的AD 内部部署中 不可用,因为您的用户很可能首先没有将其存储在那里,除非您为他们提供了将其写入AD的应用程序。
用户照片是在你的AD Azure中可用的,因为你的用户最有可能在Outlook(或在线)将他们的照片。
我假设您的内部部署AD正在通过Dirsync或ADConnect实用程序与Azure AD 同步 。 如果是,那么实际上photo
或thumbnailphoto
属性仅以单向同步(从内部部署到Azure)并且不会被回写。 这里参考DirSync和ADConnect 。
这就是为什么你无法将它从你的AD中拿出来的原因。
如何获得用户的交换/ outlook / office365照片?
从Azure AD获取照片的方法有很多种:
Exchange Web服务(EWS):使用GetUserPhoto操作。 基本上发送带有电子邮件地址和大小的SOAP信封。 XML响应将为您提供PictureData元素中包含的base64编码的照片
Exchange Web服务(EWS托管API和/或REST API):基本上使用自动发现服务访问URL https://outlook.office365.com/ews/exchange.asmx
,然后通过Microsoft.Exchange.WebServices.Data
上的EWS.Service.ConnectToService
方法进行连接需要引用库的Microsoft.Exchange.WebServices.Data
命名空间( 可以从此处下载的DLL )。 该方法保持相同的GetUserPhoto
,图像包含在二进制响应中。
Outlook REST API:基本上向您自己的URL https://outlook.office.com/api/{version}/me/photo
发送GET
请求到Outlook API( 带有承载访问令牌 ),以及URL https://outlook.office.com/api/{version}/users/email@example.com/photo
。 您将获得二进制格式的照片流作为响应。 不要忘记附加$value
来获取blob,否则你将获得元数据。 这里引用了更多细节。
Office 365 Unified API(又名图形):基本上与旧API相同。 发送GET
请求(带有持票人令牌)到URL https://graph.microsoft.com/{version}/me/photo/
为您自己的照片和https://graph.microsoft.com/{version}/users/UPN/photo
为另一个用户。 或多或少相同。 这里引用了更多细节 。 这里还有一个沙箱供您探索示例和API参考。 您也可以在这里 以 交互方式在线尝试(请不要忘记在解除获取请求之前登录 )
希望有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.