繁体   English   中英

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

[英]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正在通过DirsyncADConnect实用程序与Azure AD 同步 如果是,那么实际上photothumbnailphoto属性仅以单向同步(从内部部署到Azure)并且不会被回写。 这里参考DirSyncADConnect

这就是为什么你无法将它从你的AD中拿出来的原因。

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

从Azure AD获取照片的方法有很多种:

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

  2. 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 ,图像包含在二进制响应中。

  3. 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,否则你将获得元数据。 这里引用了更多细节。

  4. 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.

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