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

Expo React Native中Google登录报INVALID_CREDENTIAL_OR_PROVIDER_ID问题

排查Expo React Native中Google登录Firebase验证失败的问题

根据你提供的错误信息(INVALID_CREDENTIAL_OR_PROVIDER_ID)和代码,以下是具体的排查步骤:

1. 验证Google Sign-In返回的Token有效性

在获取userInfo后立即打印字段,确认idToken和accessToken是否存在且不为空:

const userInfo = await GoogleSignin.signIn();
console.log('Google返回的用户信息:', userInfo); // 检查idToken、accessToken字段

错误响应中显示id_token和access_token参数为空,说明Google Sign-In可能未正确返回有效凭证,这是导致Firebase验证失败的直接原因。

2. 检查Expo环境下的Google Sign-In配置

  • 确保app.json/app.config.js中正确配置了Google服务文件路径:
    {
      "expo": {
        "android": {
          "googleServicesFile": "./google-services.json"
        },
        "ios": {
          "googleServicesFile": "./GoogleService-Info.plist"
        }
      }
    }
    
  • 登录Google Cloud Console,确认OAuth 2.0客户端ID配置:
    • Android端:添加Expo调试环境的SHA-1哈希值(通过expo fetch:android:hashes命令获取),生产环境添加自己的签名哈希。
    • iOS端:客户端ID的Bundle ID必须与Expo配置中的ios.bundleIdentifier完全一致。
  • 确认Firebase控制台的Authentication > 登录方法中,Google登录已启用,且关联的OAuth客户端ID与Cloud Console中的一致。

3. 调整Firebase Credential的创建方式

Firebase的GoogleAuthProvider.credential方法仅需传入idToken即可(accessToken为可选参数),尝试简化代码:

const googleCredential = auth.GoogleAuthProvider.credential(userInfo.idToken);
// 不再传入accessToken
await auth().signInWithCredential(googleCredential);

若accessToken无效或为空,会干扰Firebase的凭证验证逻辑。

4. 确认库的兼容性(Expo环境关键)

@react-native-google-signin/google-signin依赖原生代码配置,Expo Go应用无法直接兼容该库,必须通过以下方式解决:

  • 切换到Expo官方支持的expo-auth-session或expo-google-sign-in库实现Google登录;
  • 构建Expo Dev Client(自定义调试客户端),将原生依赖打包进去后再测试。

内容的提问来源于stack exchange,提问作者Alex Wilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:18:15