如何通过Graph API从Azure AD中正确获取用户电话号码属性
Graph API无法获取Azure AD用户电话号码的解决方案
你遇到的问题主要由三个常见原因导致:权限配置不足、请求属性名不匹配、未包含本地同步的扩展属性,可按照以下步骤排查解决:
解决步骤
- 检查API权限配置
调用Graph API读取用户电话号码类属性,必须为你的应用分配对应权限且完成管理员同意:- 后台无交互场景(应用程序权限):需要分配
User.Read.All(应用程序类型)或Directory.Read.All权限,必须由租户管理员完成管理员同意操作 - 交互登录场景(委托权限):读取当前用户自身信息仅需
User.Read权限,读取其他用户信息需要分配User.Read.All(委托类型)权限并完成管理员同意
- 后台无交互场景(应用程序权限):需要分配
- 修正请求参数
Graph API的属性名区分大小写,你之前请求中的mobilephone拼写错误,正确属性名为mobilePhone。其次MsOnline模块返回的mobile、telephonenumber两个字段,在Graph中对应两类属性:云原生用户的属性为mobilePhone、businessPhones,从本地AD同步到Azure AD的用户对应属性会同步到onPremisesMobilePhone、onPremisesTelephoneNumber,你需要在请求中同时包含这些属性。
修正后的v1.0接口请求如下:https://graph.microsoft.com/v1.0/users?$select=userPrincipalName,mobilePhone,businessPhones,onPremisesMobilePhone,onPremisesTelephoneNumber - 可选排查方案
如果上述操作后仍无法获取属性,可以临时调用beta端点进行验证,beta端点覆盖的属性范围比v1.0更广,注意beta端点不建议用于生产环境:https://graph.microsoft.com/beta/users?$select=userPrincipalName,mobilePhone,businessPhones,onPremisesMobilePhone,onPremisesTelephoneNumber
内容的提问来源于stack exchange,提问作者Jon R.
相关产品推荐
相关产品推荐

