首页 > 解决方案 > 在 Microsoft Graph API 中获取个人资料图片一无所获

问题描述

我正在尝试使用Microsoft Graph API获取用户的个人资料图片(理想情况下,使用不同颜色背景的后备首字母,以防他们没有),但我无法让它响应任何东西但 404 状态和以下正文(令人讨厌的是延迟 5-20 秒后):

{
    "error": {
        "code": "ResourceNotFound",
        "message": "Resource could not be discovered.",
        "innerError": {
            "request-id": "1e7f0ca4-2cd4-4602-a903-b0bde1ec8ea0",
            "date": "2018-06-11T14:04:10"
        }
    }
}

我什至尝试过使用在线 Graph Explorer,但结果相同。我已将个人资料图片上传到自己的帐户,但仍然得到相同的结果。

可能是什么原因?是否有其他方法可以获取 Azure AD 用户的个人资料图片?

标签: azure-active-directorymicrosoft-graph-api

解决方案


Microsoft Graph v1.0profilePhoto从 Exchange Online 而非 Azure Active Directory 中检索用户。因此,没有在 Exchange Online 中设置邮箱的用户将没有profilePhoto可用的邮箱。

文档中:

从 Exchange Online 访问的用户、组或 Outlook 联系人的个人资料照片。它是未以 base-64 编码的二进制数据。

/beta端点中,profilePhoto资源被扩展为包括 Exchange 和 AAD。从Beta 文档

从 Exchange Online 或 Azure Active Directory (AAD) 访问的用户、组或 Outlook 联系人的个人资料照片。它是未以 base-64 编码的二进制数据。

没有关于何时在/v1.0端点上发布此功能的预计时间,并且在大多数情况下,我会警告不要/beta在生产中使用功能。然而,我看到一些开发人员使用/beta后备选项来获取profilePhoto:如果/v1.0端点无法返回照片,则会进行后续调用/beta以检查是否有可用的 AAD 图像。这是对 beta 端点的一种相对安全的使用,因为您的应用不会对 beta API 产生硬依赖。


推荐阅读