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

为何出现com.google.android.gms.common.api.ApiException: 10错误?已做配置仍未解决

React Native Google 登录始终失败,已重复排查基础配置

我知道这个问题已经被多次提及,但我始终无法解决。我已经重复执行以下操作十多次:

  • 从 Google 获取正确的 webClientId
  • 从 Gradle 获取 SHA1 并添加至 Firebase
  • 更新 google-services.json

我的代码如下:

import {GoogleSignin} from '@react-native-google-signin/google-signin';

GoogleSignin.configure({
  webClientId: '我的ID(此处未填写真实ID)',
});

const signInWithGoogle = async () => {
    try {
        // 尝试 Google 登录
        const { idToken } = await GoogleSignin.signIn();

        // 使用令牌创建 Google 凭证
        const googleCredential = auth.GoogleAuthProvider.credential(idToken);

        // 使用凭证登录用户
        const userCredential = await auth().signInWithCredential(googleCredential);

        console.log('Google 登录成功!', userCredential.user);

        // 此处执行应用逻辑(例如导航、存储用户数据)
    } catch (error) {
        // 记录详细错误信息
        console.error("Google 登录错误", error);
        console.log(`错误代码: ${error.code}`);
        console.log(`错误信息: ${error.message}`);
        console.log(`完整错误: ${JSON.stringify(error, null, 2)}`);

        // 显示详细错误提示
        Alert.alert('Google 登录错误', `Google 登录失败: ${error.message}`);
    }
};

排查建议

  1. 核对 SHA1 准确性

    • 别只依赖 Gradle 输出,用命令直接生成:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android,把结果和 Firebase 后台的记录对比,注意大小写、空格完全一致。
    • 正式环境要确保用的是发布版签名文件的 SHA1,不是 debug 版的。
  2. webClientId 配置细节

    • 确认用的是 Google Cloud Console 对应项目的Web 应用客户端ID,不是 Android 应用的客户端ID。
    • 检查 Google Cloud Console 里是否启用了「Google 登录 API」,未启用直接开启。
  3. 确保 google-services.json 生效

    • 更新文件后,执行 cd android && ./gradlew clean 清理项目缓存,再重新构建。
    • 确认文件放在 android/app/ 目录下,位置错误会导致配置不加载。
  4. 代码层面调整

    • 检查 Firebase Auth 是否已初始化,确保 initializeApp() 在应用启动时执行。
    • 尝试添加权限范围配置:
      GoogleSignin.configure({
        webClientId: '你的真实ID',
        scopes: ['email', 'profile'],
      });
      
    • 重点看 error.code:DEVELOPER_ERROR 基本是配置问题,NETWORK_ERROR 检查网络权限,SIGN_IN_CANCELLED 是用户主动取消。
  5. 其他检查项

    • 确认 AndroidManifest.xml 中添加了网络权限:<uses-permission android:name="android.permission.INTERNET" />
    • 设备的 Google Play 服务需更新到最新版本,旧版本可能导致登录失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:09