You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:43:23