如何使用Graph API获取手机号?调用/v1.0/me返回手机号为null
解决Graph API
/me端点返回mobilePhone为null的问题 我之前也碰到过一模一样的情况——明明个人资料绑定了手机号,调用https://graph.microsoft.com/v1.0/me却拿不到值,大概率是权限配置或者个人账户隐私设置的问题,咱们一步步来排查:
1. 先确认账号本身的可访问性
先通过微软的Graph测试工具登录你的outlook.com账号,直接调用GET https://graph.microsoft.com/v1.0/me:
- 如果这里返回的
mobilePhone还是null,那问题出在你的微软账户隐私设置上:
去微软账户设置页面,找到隐私相关选项,确保允许第三方应用访问你的手机号信息(个人账户默认可能会隐藏这类敏感信息)。 - 如果测试工具里能正常返回手机号,那就是你自己的应用权限配置有问题,接着往下看。
2. 检查应用的API权限配置
根据你使用的授权方式,确保权限范围足够:
- Delegated权限(个人账户常用):必须添加
User.Read或者User.ReadBasic.All权限,并且用户在登录时已经同意了这些权限(首次授权会弹出同意窗口)。
注意:个人账户不支持Application权限的调用,别用Client Credentials流访问/me端点,这种场景必须用用户登录的Delegated流。 - 如果是工作/学校账号:除了添加
User.Read,可能还需要管理员完成权限的同意操作(部分敏感权限需要管理员审批)。
3. 核对返回字段的正确性
你返回的结果里businessPhones是空数组,mobilePhone是null,字段名称是对的——mobilePhone就是存储个人手机号的字段,别和办公电话对应的businessPhones搞混了。
额外提醒
如果是用Application权限访问工作/学校账号的用户信息,不能用/me端点,必须换成/users/{user-id},并且需要User.Read.All的Application权限,同时要确保用户的手机号在Azure AD里是已填充状态。
内容的提问来源于stack exchange,提问作者Rakesh Reddy
相关产品推荐
相关产品推荐

