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

Expo托管应用生产构建中Google认证Android端失败

Expo 47 Android Google认证返回{"type":"dismiss"}无法获取id_token的解决方案

以下是针对该问题的具体排查和解决步骤:

1. 核对Android客户端ID配置

  • 确保Google Cloud Console中创建的Android OAuth 2.0客户端ID的包名与app.json里expo.android.package完全一致
  • 确认客户端ID关联的SHA-1指纹正确:发布版APK必须使用发布密钥的SHA-1,调试版用debug.keystore的SHA-1,可通过keytool -list -v -keystore 你的密钥库文件获取指纹,更新到Google Cloud配置中
  • 检查app.json里的expo.android.googleServicesFile是否指向正确的google-services.json,该文件中的client_id需与Android客户端ID匹配

2. 修正expo-auth-session参数配置

  • 使用useIdTokenAuthRequest时,必须明确传入androidClientId(Google Cloud生成的Android专用客户端ID,不能混用Web/iOS的ID)
  • 确保scopes包含openid,这是获取id_token的必要权限,示例配置:
const [request, response, promptAsync] = useIdTokenAuthRequest(
  {
    androidClientId: "你的Android客户端ID",
    iosClientId: "你的iOS客户端ID",
    scopes: ['openid', 'email', 'profile'],
  },
  {}
);

3. 配置Android Intent过滤与重定向URI

  • 在app.json中添加对应Google认证的Intent过滤,确保回调链接能被APP捕获:
"android": {
  "package": "com.your.app.package",
  "intentFilters": [
    {
      "action": "VIEW",
      "data": [
        {
          "scheme": "com.your.app.package",
          "host": "oauthredirect",
          "pathPrefix": "/google"
        }
      ],
      "category": ["BROWSABLE", "DEFAULT"]
    }
  ]
}
  • 同时在Google Cloud Console的Android客户端ID配置中,添加重定向URI:com.your.app.package:/oauthredirect/google

4. 适配Expo 47版本兼容性

  • 确保expo-auth-session版本与Expo 47兼容,推荐使用~3.8.0版本,避免版本不匹配导致的异常
  • 不要手动指定redirectUri,让Expo自动生成,确保与Intent过滤配置一致

5. 排查发布版APK的特殊问题

  • 不要用Expo Go测试发布版场景,Expo Go的包名与你的APP不一致,会导致认证回调失败,必须生成正式APK/AAB安装到设备测试
  • 检查设备的Google Play服务是否为最新版本,旧版本可能引发认证流程异常

内容的提问来源于stack exchange,提问作者Mahesh Samudra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:35:27