Firebase Android端App Check集成Play Integrity失败求助
解决Firebase App Check + Play Integrity 无效Token问题
核心排查步骤
- 启用Play Integrity API:打开Google Cloud控制台,找到你的项目,搜索「Play Integrity API」,确认状态为已启用。不少人只在Firebase控制台开启了App Check的Play Integrity选项,却遗漏了底层API的启用。
- 核对SHA-256指纹:
- 确保Firebase控制台注册的SHA-256,和你签名APK/APP Bundle用的指纹完全一致(包括调试、发布两种密钥)。
- 用命令重新生成验证:
keytool -list -v -keystore your-keystore-path.jks,复制输出的SHA256值,和Firebase后台的记录逐字符比对,不能有空格或拼写错误。
- 检查初始化代码顺序:
- 必须先初始化FirebaseApp,再初始化App Check,顺序不能颠倒。确认代码使用的是
PlayIntegrityAppCheckProviderFactory,示例代码如下:FirebaseApp.initializeApp(applicationContext) val appCheck = FirebaseAppCheck.getInstance() appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() )
- 必须先初始化FirebaseApp,再初始化App Check,顺序不能颠倒。确认代码使用的是
- 匹配应用包名:Firebase控制台的应用包名,要和你打包用的包名完全一致,包括大小写(虽然包名通常小写,但别忽略细节)。
- 测试正式签名包:Android Studio默认的调试密钥可能和Firebase注册的不一致,建议用正式签名的APK/App Bundle测试——可以上传到Play Console内部测试渠道,或者用
bundletool生成带签名的安装包,Play Integrity在纯调试环境下可能存在验证限制。 - 核对App Check规则:去Firebase控制台的App Check页面,确认项目规则允许Play Integrity的请求,没有误设置成仅允许SafetyNet。
- 检查API密钥权限:打开Google Cloud控制台的「API和服务」→「凭据」,找到Firebase项目对应的API密钥,确保它拥有Play Integrity API的调用权限,没有被错误限制。
额外调试技巧
- 开启App Check调试日志,获取更详细的错误信息:
FirebaseAppCheck.getInstance().setTokenAutoRefreshEnabled(true) FirebaseAppCheck.getInstance().addAppCheckTokenListener { tokenResult -> Log.d("AppCheckDebug", "Token: ${tokenResult.token}, Error: ${tokenResult.error}") } - 确认Play Console应用状态:你的应用必须已在Play Console创建,包名和Firebase一致,且没有处于未发布的异常状态。
内容的提问来源于stack exchange,提问作者Luis
相关产品推荐
相关产品推荐

