React Native应用Firebase配置SSO:模拟器正常真机异常求助
排查React Native Firebase SSO真机失效问题
1. 检查签名配置是否混淆
- 打开
android/app/build.gradle,确认Debug和Release变体的签名配置是否独立。很多情况是不小心让Release复用了Debug的签名,导致密钥一致:
错误示例(复用Debug配置):
正确的Release配置应指向正式密钥库:signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } release { signingConfig signingConfigs.debug } }release { storeFile file('your-release-key.keystore') storePassword '你的密钥库密码' keyAlias '你的密钥别名' keyPassword '你的密钥密码' }
2. 核对Firebase包名匹配
- 确认Firebase控制台注册的Android应用包名,和
android/app/src/main/AndroidManifest.xml里的package属性完全一致,大小写、字符都不能错。
3. 确保google-services.json正确替换
- 重新生成的
google-services.json必须覆盖android/app/目录下的旧文件,不要放到子目录或其他位置。
4. 清理真机缓存与重装应用
- 卸载真机上的现有应用,清除Google Play服务的缓存,再重新安装调试版本。旧的签名缓存可能残留导致验证失败。
5. 捕获具体Auth错误信息
- 在登录逻辑里添加错误监听,获取精准失败原因,不要只看现象:
import auth from '@react-native-firebase/auth'; import { GoogleSignin } from '@react-native-google-signin/google-signin'; const signInWithGoogle = async () => { try { await GoogleSignin.hasPlayServices(); const userInfo = await GoogleSignin.signIn(); const googleCredential = auth.GoogleAuthProvider.credential(userInfo.idToken); await auth().signInWithCredential(googleCredential); } catch (error) { console.log('Google登录失败:', error.code, error.message); // 比如DEVELOPER_ERROR通常对应签名/配置不匹配 } };
6. 检查真机Google Play服务版本
- 确保真机上的Google Play服务是最新版本,过低版本可能不支持最新的Auth验证流程,可在Google Play商店更新。
7. 验证密钥库有效性
- 用
keytool命令手动验证密钥库信息,和signingReport结果对比:
输入密码后查看SHA-1和SHA-256,确认和控制台添加的一致。keytool -list -v -keystore 你的密钥库文件路径.keystore
内容的提问来源于stack exchange,提问作者Sahan Rajapaksha
相关产品推荐
相关产品推荐

