azure-active-directory - 在 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 用户的个人资料图片?
解决方案
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 产生硬依赖。
推荐阅读
- batch-file - 有没有办法用批处理启动命令提示符,然后在该命令窗口中运行多个命令?
- java - 在读取 txt 文件时从 1D 数组制作 2D 数组
- vba - 将附件字段文件路径提取到不同的列
- macos - macOS SwiftUI 关闭通过菜单中的 segue 呈现的应用模式 NSHostingController?
- react-native - React-Native Navigation v5:如何更改 tabBarLabel 或 tabBarIcon 以及特定屏幕上选项卡的颜色背景?
- kubernetes - KubernetesPodOperator 无法识别 service_account_name
- javascript - 使用 d3.js 将 JSON 数据动态加载到 Leaflet 地图时出现问题
- c++ - C ++如何计算用户输入的数字中的偶数位数?
- java - 从 spring-webflux 中进行异步 http 调用
- java - 为什么IDEA打开中文文件夹时编译出错