React Native项目APK构建版本Firebase Auth报[auth/app-not-authorized]错误,Play Integrity基础完整性校验失败,但开发环境与AAB版本正常
我之前也碰到过几乎一模一样的问题,折腾了好一阵才解决,给你梳理几个肯定能帮到你的排查点和解决方案:
先确认APK的签名指纹和Firebase控制台完全匹配
开发环境用的是debug签名,Firebase里大概率已经配置了对应的SHA-1和SHA-256,但你自己打包的release APK用的是正式签名文件,这两个指纹必须要加到Firebase控制台里。
你可以用这个命令获取APK的签名指纹:keytool -list -v -keystore 你的正式签名文件路径 -alias 你的签名别名
复制输出里的SHA-1和SHA-256,打开Firebase控制台→你的项目→项目设置→应用(对应Android应用)→添加指纹,把这两个指纹填进去。然后一定要下载最新的google-services.json文件,替换掉你项目android/app目录下的旧文件,再重新构建APK。检查Google Play签名指纹是否已配置(如果你的APK是要上传到Play商店的)
如果你是自己打包APK测试,但之后会上传到Google Play,那Google Play会对APK重新签名,这时候Firebase里还需要添加Google Play提供的签名指纹。
去Google Play Console→你的应用→设置→应用完整性,里面能看到Google Play签名的SHA-1和SHA-256,把这两个也加到Firebase控制台的应用指纹列表里。另外别忘了去Firebase的“构建→Play Integrity”页面,确认Play Integrity API已经启用,没启用的话直接开启就行。确认APK的release构建签名配置正确
打开android/app/build.gradle文件,检查signingConfigs里的release块,确保storeFile、storePassword、keyAlias、keyPassword都正确指向你的正式签名文件和密码,然后在buildTypes的release块里,要设置signingConfig signingConfigs.release,避免构建出未正确签名的APK。清理缓存后重新构建
有时候旧的构建缓存会导致配置不生效,先执行./gradlew clean清理Gradle缓存,再用npx react-native run-android --variant release重新构建正式版本的APK,这样能确保新的配置被加载。
为什么开发环境和AAB版本正常呢?其实很好理解:开发环境用的是debug签名,你早就把debug指纹配置到Firebase了;而AAB上传到Google Play后,会用Google Play的签名,你应该已经把这个签名的指纹加到Firebase里了,所以AAB版本能正常验证,而自己打包的APK因为签名指纹没配置全,就触发了Play Integrity的基础完整性校验失败。
内容来源于stack exchange

