为何出现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}`); } };
排查建议
核对 SHA1 准确性
- 别只依赖 Gradle 输出,用命令直接生成:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android,把结果和 Firebase 后台的记录对比,注意大小写、空格完全一致。 - 正式环境要确保用的是发布版签名文件的 SHA1,不是 debug 版的。
- 别只依赖 Gradle 输出,用命令直接生成:
webClientId 配置细节
- 确认用的是 Google Cloud Console 对应项目的Web 应用客户端ID,不是 Android 应用的客户端ID。
- 检查 Google Cloud Console 里是否启用了「Google 登录 API」,未启用直接开启。
确保 google-services.json 生效
- 更新文件后,执行
cd android && ./gradlew clean清理项目缓存,再重新构建。 - 确认文件放在
android/app/目录下,位置错误会导致配置不加载。
- 更新文件后,执行
代码层面调整
- 检查 Firebase Auth 是否已初始化,确保
initializeApp()在应用启动时执行。 - 尝试添加权限范围配置:
GoogleSignin.configure({ webClientId: '你的真实ID', scopes: ['email', 'profile'], }); - 重点看
error.code:DEVELOPER_ERROR基本是配置问题,NETWORK_ERROR检查网络权限,SIGN_IN_CANCELLED是用户主动取消。
- 检查 Firebase Auth 是否已初始化,确保
其他检查项
- 确认 AndroidManifest.xml 中添加了网络权限:
<uses-permission android:name="android.permission.INTERNET" /> - 设备的 Google Play 服务需更新到最新版本,旧版本可能导致登录失败。
- 确认 AndroidManifest.xml 中添加了网络权限:
内容的提问来源于stack exchange,提问作者Samuel Fipps
相关产品推荐
相关产品推荐

