You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:06:49