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

更换Client ID后React Native Google登录报错12500求助

解决React Native Google登录错误码12500问题

问题场景

在React Native项目中使用react-native-google-signin/google-signin实现Google单点登录(SSO),此前代码运行正常,但更换邮箱和Client ID后出现登录失败,错误信息如下:

{"nativeStackAndroid":[],"userInfo":null,"message":"A non-recoverable sign in failure occurred","code":"12500"}

此前可正常运行的代码:

const googleSignIN = () => {
  GoogleSignin.configure({
    androidClientId: CLIENT_ID
  })

  GoogleSignin.hasPlayServices().then((hasPlayService) => {
      if (hasPlayService) {
          GoogleSignin.signIn().then(async (userInfo) => {
              console.log("userInfo", JSON.stringify(userInfo.user))
              setLoading(true);
              const social_Login_Data = {
                  email: userInfo.user.email,
                  name: userInfo.user.name
              }
              console.log("social_Login_Data : ", social_Login_Data);
              try {
                  const res = await api.post(`/Auth/login-single-signin`, social_Login_Data);
                  console.log("response : ", res.data);
                  if (res.data.ack === 1) {
                      console.log('success');
                      navigation.navigate('DrawerNavigation')
                  } else {
                      setItem('social_Login_Data', JSON.stringify(social_Login_Data))
                      navigation.navigate('VerifyEmail',{msg:res.data.message})
                  }
                  setLoading(false);
              } catch (e) {
                  setLoading(false);
                  alert(e)
              }
          }).catch((e) => {
              setLoading(false);
              console.log("ERROR IS1: " + JSON.stringify(e));
          })
      }
  }).catch((e) => {
      console.log("ERROR IS2: " + JSON.stringify(e));
  })
}

排查与解决步骤

  • 校验Client ID配置
    确保新的Client ID是Google Cloud控制台中为Android平台生成的,而非iOS或Web客户端ID。进入项目的「API和服务→凭据」页面,核对该Client ID对应的包名是否与你项目的android/app/build.gradle里的applicationId完全一致。

  • 核对签名证书指纹
    Google登录要求应用的签名指纹必须与Cloud控制台中配置的一致,debug和release环境要分别配置:

    # 获取debug环境SHA-1指纹
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    # 获取release环境SHA-1指纹
    keytool -list -v -keystore 你的release密钥库路径 -alias 密钥别名
    

    将生成的SHA-1指纹更新到对应Android Client ID的配置项中。

  • 配置OAuth同意屏幕测试用户
    如果你的应用处于「测试」状态,新更换的邮箱需要添加到OAuth同意屏幕的测试用户列表中。进入Google Cloud控制台的「API和服务→OAuth同意屏幕」,在测试用户栏添加该邮箱。

  • 清理缓存并重新构建
    旧配置缓存可能导致问题,执行以下命令清理后重新构建:

    # 重置React Native缓存
    npx react-native start --reset-cache
    # 清理Android构建缓存
    cd android && ./gradlew clean && cd ..
    # 重新运行项目
    npx react-native run-android
    
  • 优化configure调用时机
    避免每次登录都重复调用GoogleSignin.configure,建议将配置移到组件初始化阶段:

    useEffect(() => {
      GoogleSignin.configure({
        androidClientId: CLIENT_ID
      });
    }, []);
    
    const googleSignIN = () => {
      // 移除原函数内的configure代码,保留后续逻辑
      GoogleSignin.hasPlayServices().then(...)
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:27:39