使用Azure Graph API按ID取用户详情时Email Addresses字段缺失的求助
解决Azure Graph API无法获取B2C用户Email Addresses属性的问题
核心原因
Email Addresses对应Graph API中的emailAddresses字段,属于非默认返回属性,必须显式指定才能获取,同时需要确保权限配置正确。
解决步骤
确认所需权限
- 后台服务调用(无用户上下文):需配置
User.Read.All或User.ReadWrite.All应用权限,且已完成管理员同意。 - 用户上下文调用:需配置
User.Read委托权限。
- 后台服务调用(无用户上下文):需配置
使用
$select参数显式指定字段
默认查询不会返回emailAddresses,必须在请求中通过$select参数明确包含该字段。示例请求:GET https://graph.microsoft.com/v1.0/users/{user-id}?$select=id,displayName,emailAddresses可根据需求添加其他需要的属性,用逗号分隔。
B2C用户属性格式说明
成功获取后,emailAddresses是一个数组结构,示例响应片段:{
"id": "xxxx-xxxx-xxxx-xxxx",
"displayName": "Shashank Singh",
"emailAddresses": [
{
"address": "shashank@example.com",
"name": "Shashank Singh"
}
]
}验证API版本
确保使用稳定版v1.0的Graph API,beta版本属性可能存在变动,不建议生产环境使用。权限生效验证
可通过Graph Explorer测试请求,确认当前账号/应用已拥有对应权限,避免因权限不足导致字段缺失。
内容的提问来源于stack exchange,提问作者Shashank singh
相关产品推荐
相关产品推荐

