Azure移动服务集成Google登录后如何获取用户显示名称与邮箱
解决Azure Easy Auth Google登录后无法获取用户显示名和邮箱的问题
我之前也踩过这个坑!用Azure移动服务+Easy Auth做Google登录时,默认确实不会自动返回用户的显示名和邮箱,不像Facebook或微软那样直接给。不过只要调整几个配置就能搞定,下面是具体步骤:
1. 先检查Google OAuth应用的权限配置
首先得确保你的Google OAuth客户端已经请求了必要的权限:
- 登录Google Cloud控制台,找到你的项目→API和服务→凭据
- 找到对应的OAuth 2.0客户端ID,点击编辑
- 在授权范围里,添加
profile和email这两个scope(这俩是获取用户基本信息的核心权限) - 保存后,重新发布你的OAuth应用(有时候需要等几分钟生效)
2. 配置Azure移动服务的Google身份提供商
接下来要让Azure正确拉取这些属性:
- 登录Azure门户,打开你的移动服务→认证→身份提供商→选择Google
- 确认你已经填对了Google那边的客户端ID和客户端密钥
- 找到用户属性或附加声明的配置项(不同Azure界面版本可能叫法不同),明确指定要从Google获取
name(显示名)和email(邮箱)属性 - 如果有“获取用户资料”的复选框,一定要勾选上
3. 在Android代码里正确提取用户信息
不要试图从初始的登录响应里硬找,应该通过Azure移动服务的用户对象来获取声明:
// 获取当前登录用户 MobileServiceUser currentUser = mMobileServiceClient.getCurrentUser(); if (currentUser != null) { // 从claims集合中提取显示名 String displayName = currentUser.getClaims().get("name"); // 提取邮箱 String userEmail = currentUser.getClaims().get("email"); // 这里就可以用这些信息做后续处理了 }
如果claims里还是找不到对应的属性,那你需要在Azure的认证设置里添加自定义声明映射:把Google返回的name字段映射到Azure用户声明的name,email映射到email。
4. 调试排查小技巧
- 用登录后拿到的Google access token,直接调用
https://www.googleapis.com/oauth2/v3/userinfo接口,看看Google是否返回了name和email。如果返回了,说明问题在Azure配置;如果没返回,那就是Google权限没配对。 - 查看Azure移动服务的认证日志,里面会记录登录过程中属性获取的细节,能帮你定位哪里出了问题。
内容的提问来源于stack exchange,提问作者f.k
相关产品推荐
相关产品推荐

