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