如何获取用户的 exchange/outlook/office365 照片?
How to get user's exchange/outlook/office365 photo?
我们公司使用 Office 365。所以当用户登录我的 asp.net mvc 网站时,我想显示他们的照片,就像 Outlook 一样。
outlook 从哪里获取用户的照片?我如何以编程方式实现它?
我尝试访问 ActiveDirectory 并获取缩略图照片,但对于大多数用户来说它是空白的。因此,Outlook 必须在其他地方获取它。在哪里以及如何?
我还看到了一些使用 Microsoft.Office.Interop.Outlook 程序集的示例(假设它需要安装 Outlook 才能运行)。但是,此网站运行在未安装 Outlook 的服务器上。
I've tried hitting up the ActiveDirectory and fetching the
thumbnailPhoto, but it's blank for most users. Thus Outlook must be
getting it elsewhere. Where and how?
用户照片在您的 AD内部部署 中不可用,因为您的用户很可能没有将其存储在第一名,除非您为他们提供了将其写入 AD 的应用程序。
用户照片 在您的 ADAzure 中可用,因为您的用户很可能在 Outlook(或在线)中应用他们的照片.
我假设您的本地 AD 正在通过 Dirsync 或 ADConnect 实用程序与 Azure AD 同步。如果是,那么实际上 photo
或 thumbnailphoto
属性仅以一种方式同步(从内部部署到 Azure)并且不会写回。参考 here for DirSync and here for ADConnect.
这就是您无法从 AD 中删除它的原因。
How to get user's exchange/outlook/office365 photo?
有很多方法可以从 Azure AD 获取照片:
Exchange Web 服务 (EWS): 通过使用 GetUserPhoto operation. Basically sending a SOAP envelope with the email address and size. the XML response will get you the base64-encoded photo contained in the PictureData 元素
Exchange Web 服务(EWS 托管 API and/or REST API): 基本上使用自动发现服务来URL https://outlook.office365.com/ews/exchange.asmx
,然后通过 Microsoft.Exchange.WebServices.Data
命名空间上的 EWS.Service.ConnectToService
方法进行连接,您需要为其引用库(一个 DLL,您可以 download from here)。方法保持不变 GetUserPhoto
并且图像以二进制形式包含在响应中。
Outlook REST API: 基本上向 Outlook API (使用不记名访问令牌) 在 URL https://outlook.office.com/api/{version}/me/photo
为您自己,并在 URL https://outlook.office.com/api/{version}/users/email@example.com/photo
。您将获得二进制格式的照片流作为响应。不要忘记附加 $value
以获取 blob,否则您将获得元数据。 More details referenced here.
Office 365 统一 API(又名图形): 基本上与旧版 API 几乎相同。将 GET
请求(带有不记名令牌)发送到 URL https://graph.microsoft.com/{version}/me/photo/
以获取您自己的照片,并向 https://graph.microsoft.com/{version}/users/UPN/photo
发送另一个用户的请求。或多或少相同。 More details referenced here. There is also a sandbox here for you to explore the samples and API references. You can also try it out yourself online interactively here(在触发您的获取请求之前不要忘记登录)
希望对您有所帮助。
我们公司使用 Office 365。所以当用户登录我的 asp.net mvc 网站时,我想显示他们的照片,就像 Outlook 一样。
outlook 从哪里获取用户的照片?我如何以编程方式实现它?
我尝试访问 ActiveDirectory 并获取缩略图照片,但对于大多数用户来说它是空白的。因此,Outlook 必须在其他地方获取它。在哪里以及如何?
我还看到了一些使用 Microsoft.Office.Interop.Outlook 程序集的示例(假设它需要安装 Outlook 才能运行)。但是,此网站运行在未安装 Outlook 的服务器上。
I've tried hitting up the ActiveDirectory and fetching the thumbnailPhoto, but it's blank for most users. Thus Outlook must be getting it elsewhere. Where and how?
用户照片在您的 AD内部部署 中不可用,因为您的用户很可能没有将其存储在第一名,除非您为他们提供了将其写入 AD 的应用程序。
用户照片 在您的 ADAzure 中可用,因为您的用户很可能在 Outlook(或在线)中应用他们的照片.
我假设您的本地 AD 正在通过 Dirsync 或 ADConnect 实用程序与 Azure AD 同步。如果是,那么实际上 photo
或 thumbnailphoto
属性仅以一种方式同步(从内部部署到 Azure)并且不会写回。参考 here for DirSync and here for ADConnect.
这就是您无法从 AD 中删除它的原因。
How to get user's exchange/outlook/office365 photo?
有很多方法可以从 Azure AD 获取照片:
Exchange Web 服务 (EWS): 通过使用 GetUserPhoto operation. Basically sending a SOAP envelope with the email address and size. the XML response will get you the base64-encoded photo contained in the PictureData 元素
Exchange Web 服务(EWS 托管 API and/or REST API): 基本上使用自动发现服务来URL
https://outlook.office365.com/ews/exchange.asmx
,然后通过Microsoft.Exchange.WebServices.Data
命名空间上的EWS.Service.ConnectToService
方法进行连接,您需要为其引用库(一个 DLL,您可以 download from here)。方法保持不变GetUserPhoto
并且图像以二进制形式包含在响应中。Outlook REST API: 基本上向 Outlook API (使用不记名访问令牌) 在 URL
https://outlook.office.com/api/{version}/me/photo
为您自己,并在 URLhttps://outlook.office.com/api/{version}/users/email@example.com/photo
。您将获得二进制格式的照片流作为响应。不要忘记附加$value
以获取 blob,否则您将获得元数据。 More details referenced here.Office 365 统一 API(又名图形): 基本上与旧版 API 几乎相同。将
GET
请求(带有不记名令牌)发送到 URLhttps://graph.microsoft.com/{version}/me/photo/
以获取您自己的照片,并向https://graph.microsoft.com/{version}/users/UPN/photo
发送另一个用户的请求。或多或少相同。 More details referenced here. There is also a sandbox here for you to explore the samples and API references. You can also try it out yourself online interactively here(在触发您的获取请求之前不要忘记登录)
希望对您有所帮助。