Flutter Android发布版Firebase App Check 403错误排查求助
问题定位与解决步骤
你的怀疑是准确的:Play Integrity Provider仅在通过Google Play官方渠道分发的应用中生效,本地打包的发布版或第三方渠道包无法完成验证,这是导致403「App attestation failed」报错的核心原因之一。以下是具体排查和解决方向:
1. 验证Play渠道分发的必要性
- 若需测试发布版App Check功能,必须将包含
firebase-appcheck-playintegrity依赖的AAB/APK上传至Google Play控制台(内部测试、封闭测试或生产渠道均可),通过Play渠道安装应用后再验证逻辑。 - 本地直接安装的签名发布版APK,因缺少Google Play服务的环境校验,Play Integrity无法完成身份验证。
2. 确认Play Integrity API启用状态
- 进入关联Firebase项目的Google Cloud控制台,搜索「Play Integrity API」,手动确认该API已启用(部分场景下不会自动触发启用)。
- 检查API配额是否正常,未被限制调用。
3. 二次核对签名密钥一致性
- 确保Firebase App Check中填写的SHA-256是Google Play应用签名密钥(而非本地上传密钥),可在Play控制台「应用签名」页面获取该密钥。
- 若使用Google Play应用签名,仅需配置Play生成的应用签名密钥,本地上传密钥的SHA-256无需在Firebase中配置。
4. 非Play渠道测试的临时替代方案
如果需要在非Play渠道测试发布版App Check,可临时切换到SafetyNet Provider(虽已被Play Integrity替代,但仍可用于测试):
修改main.dart配置:
await FirebaseAppCheck.instance.activate( androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.safetyNet);
替换android/app/build.gradle依赖:
implementation("com.google.firebase:firebase-appcheck-safetynet")
同时在Firebase App Check中配置SafetyNet对应的Play应用签名密钥SHA-256。
5. 补充日志与状态检查
- 启用App Check详细日志(上线前需移除):
FirebaseAppCheck.instance.onTokenChange.listen((token) { print('App Check token: ${token?.token}'); });
- 检查Google Play控制台「App Integrity」页面,确认上传含依赖的包后是否显示「配置完成」状态。
内容的提问来源于stack exchange,提问作者Anthony Kalampogias
相关产品推荐
相关产品推荐

