Flutter Android端Firebase AppCheck 403错误:应用验证失败求助
解决Flutter Firebase AppCheck Android平台403 "App attestation failed"问题
核心排查修复步骤
日志中的App attestation failed是问题关键,说明Google Play Integrity服务无法验证应用合法性,按以下步骤逐一排查:
1. 核对应用签名指纹
- 确保Firebase控制台配置的SHA-256指纹,和当前构建应用使用的签名文件指纹完全一致。
- 用命令查看指纹:
keytool -list -v -keystore 你的签名文件路径.jks -alias 你的别名 - 注意:调试版、发布版签名文件的指纹不同,Firebase控制台需分别添加。
- 用命令查看指纹:
- 若使用Android Studio默认调试签名,指纹路径为
~/.android/debug.keystore,默认密码android,别名androiddebugkey。
2. 检查Firebase AppCheck配置
- 在Firebase控制台的AppCheck页面,确认已为Android应用启用Play Integrity提供者。
- 确保
google-services.json是从Firebase控制台最新下载的,文件内的project_number需和日志中的cloudProjectNumber一致。
3. 匹配应用构建与测试渠道
- Play Integrity服务要求应用需通过Google Play渠道安装,或使用Play签名的安装包测试:
- 本地调试场景:
- 在Firebase AppCheck设置中启用调试模式(添加调试设备ID),或在代码中开启调试:
FirebaseAppCheck.instance.setTokenProviderFactory(DebugAppCheckProviderFactory.getInstance()) - 确保测试设备的Google Play服务为最新版本。
- 在Firebase AppCheck设置中启用调试模式(添加调试设备ID),或在代码中开启调试:
- 发布版测试场景:
必须将应用上传至Google Play Console(内部/封闭测试渠道均可),从Play商店安装后测试,本地直接安装签名包会触发验证失败。
- 本地调试场景:
4. 验证代码集成正确性
- 确认Flutter端AppCheck初始化代码正确:
await Firebase.initializeApp(); await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.playIntegrity, ); - 非调试场景下,不要将
androidProvider设置为debug。
5. 检查网络与权限
- 确保
AndroidManifest.xml中添加了网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 测试设备需能正常访问Google服务(Play Integrity依赖联网验证)。
6. 确认Firebase与Play项目关联
- 在Firebase控制台项目设置 > 集成页面,检查Firebase项目是否已正确关联目标Google Play Console项目。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

