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

Expo Auth Session+Firebase在Android端谷歌认证报400错误求助

Expo Auth Session + Firebase Google认证Android端400 Invalid Request 解决方案

针对你遇到的iOS正常、Android选择账号后返回400错误的问题,以下是常见排查和解决步骤:

1. 确认Android OAuth客户端的SHA-1指纹配置

Google Android OAuth客户端要求绑定正确的SHA-1签名指纹,Expo开发/构建环境的指纹和本地原生签名不同:

  • 开发环境:运行expo fetch:android:hashes获取SHA-1和SHA-256指纹,将其添加到Google Cloud控制台对应Android OAuth客户端的签名证书指纹列表中。
  • EAS构建:在EAS Dashboard的项目构建配置中获取构建用的SHA-1,同样添加到Google Cloud。

2. 配置App Scheme

Expo Auth Session需要Android的Intent Filter来处理认证回调,需在app.json中配置scheme:

{
  "expo": {
    "scheme": "your-app-scheme", // 建议使用包名,比如com.your.bubblechat
    // 其他配置...
    "android": {
      "package": "com.your.bubblechat"
    }
  }
}

同时确保Google Cloud控制台中该Android OAuth客户端的授权重定向URI包含your-app-scheme://auth(Expo Auth Session默认回调URI)。

3. 完善Google认证请求参数

为useAuthRequest添加必要的权限Scope,缺少核心Scope可能导致请求无效:

const [request, response, promptAsync] = Google.useAuthRequest({
  iosClientId: 'xxxxxx.apps.googleusercontent.com',
  androidClientId: 'xxxxxx.apps.googleusercontent.com',
  scopes: ['profile', 'email'], // 必须添加的基础Scope
});

4. 修正代码中的拼写错误

你代码中credetial是拼写错误,需改为credential:

// 错误
const credetial = GoogleAuthProvider.credential(id_token);
// 正确
const credential = GoogleAuthProvider.credential(id_token);

5. 检查OAuth同意屏幕配置

  • 如果你的应用是外部用户使用(未发布),需在Google Cloud控制台的OAuth同意屏幕中添加测试用户,确保你测试用的Google账号在列表内。
  • 确认同意屏幕的必填字段(如应用名称、隐私政策链接)已完整配置。

6. 验证Firebase配置

确保项目根目录的google-services.json是从Firebase控制台下载的最新版本,其中的client.client_id需和Google Cloud中配置的Android客户端ID一致。


内容的提问来源于stack exchange,提问作者Filip Huhta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:31:05