如何通过显示名从Microsoft Graph API获取Azure B2C用户Object ID?
解决方案:通过邮箱获取Azure B2C用户Object ID并更新自定义属性
方法1:用Microsoft Graph API直接查询邮箱匹配的用户
Azure AD连接器依赖UPN查询的限制可以通过直接调用Graph API绕过,支持按邮箱字段精准过滤:
- 在Power Automate中添加HTTP动作:
- 请求方法:
GET - 请求URI:
https://graph.microsoft.com/v1.0/users?$filter=mail eq '{用户邮箱}'&$select=id - 身份验证选择「Azure AD OAuth」,配置项:
- 租户:你的B2C租户ID
- 受众:
https://graph.microsoft.com - 权限需提前分配
User.Read.All或Directory.Read.All(确保流的服务主体已获得管理员同意)
- 请求方法:
- 解析返回的JSON响应,提取
value[0].id即为目标用户的Object ID - 携带该Object ID调用Patch请求
https://graph.microsoft.com/v1.0/users/{object-id}完成自定义属性更新
注:若存在极罕见的多用户同邮箱场景,可追加额外过滤条件(如
givenName或surname)缩小范围
方法2:使用Azure AD B2C专用连接器
若你的Power Automate环境已部署Azure AD B2C连接器,可直接利用其适配B2C租户的特性:
- 添加Azure AD B2C连接器的「Get user by email」动作
- 输入目标用户邮箱,返回结果中直接提取
Object ID字段 - 后续流程同方法1的Patch请求步骤
方法3:Power App内直接完成查询与更新(跳过Power Automate)
若无需中间流处理逻辑,可在Power App内直接操作:
- 给Power App注册Graph API权限:
User.Read.All、User.ReadWrite.All并完成管理员同意 - 使用
Office365Users连接器的SearchUserV2方法查询用户:Set(varTargetUser, First(Office365Users.SearchUserV2({searchQuery: "mail:" & txtUserEmail.Text}).value)); Set(varObjectID, varTargetUser.Id); - 调用Graph API的Patch接口完成属性更新,或使用
Office365Users.UpdateUser方法直接修改
权限核心注意事项
- 查询用户需
User.Read.All/Directory.Read.All权限,更新用户需User.ReadWrite.All/Directory.ReadWrite.All权限 - 需在B2C租户的应用注册中,给对应服务主体(Power Automate应用或Power App)分配上述权限并授予管理员同意
内容的提问来源于stack exchange,提问作者pelicansurfs
相关产品推荐
相关产品推荐

