Flutter Android端Firebase App Check Debug构建权限异常求助
问题分析与解决方案
核心原因
你的Debug构建App Check失效,本质是本地Debug签名的SHA-256指纹未被Firebase Play Integrity允许,而Release构建正常是因为它使用了Google Play托管的应用签名密钥,该指纹已正确配置。
具体细节:
- Release版本由Google Play应用签名密钥签名,你已将对应指纹配置到Firebase,所以校验通过。
- Debug版本使用本地
debug.keystore的密钥签名,这个指纹没有加入Firebase Play Integrity的Debug允许列表,导致App Check令牌无效,触发PERMISSION_DENIED错误,被标记为“Unverified Invalid Requests”。
另外,Google Play控制台的签名指纹和你本地的不同是正常现象——Google Play应用签名是Google托管的独立密钥,和你本地的debug/release密钥完全无关。
解决步骤
1. 确认本地Debug签名的SHA-256指纹
重新执行命令获取正确的Debug指纹(默认密码为android):
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
复制输出中的SHA256值。
2. 在Firebase添加Debug指纹到Play Integrity
进入Firebase控制台 → 你的项目 → 新Android应用 → App Check → 选择Play Integrity提供者:
- 找到「Debug允许列表」(界面可能因版本略有差异),添加刚才复制的Debug SHA-256指纹。
- 保存配置后,等待5-10分钟让变更生效。
3. 可选:使用Debug令牌绕过校验
如果上述配置后仍有问题,可以在Debug模式下启用App Check的Debug提供者:
在Flutter项目的App Check初始化代码中,针对Debug环境做适配:
import 'package:firebase_app_check/firebase_app_check.dart'; import 'package:flutter/foundation.dart'; void initAppCheck() async { await FirebaseAppCheck.instance.activate( androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity, appleProvider: AppleProvider.appAttest, ); }
运行Debug构建后,控制台会输出一个Debug令牌,将该令牌添加到Firebase控制台App Check的「Debug令牌允许列表」中,即可让Debug构建正常通过校验。
4. 验证修复效果
重新运行Debug构建,测试Firestore连接,查看Firebase控制台的App Check统计,确认请求不再被标记为无效。
额外注意点
- 确保Firebase控制台的Android应用包名,与Flutter项目
android/app/build.gradle中的applicationId完全一致。 - 本地debug/release密钥和Google Play应用签名密钥是独立的,需分别配置对应的指纹到Firebase。
- Firebase配置变更需要一定时间生效,不要立即测试,避免误判。
内容的提问来源于stack exchange,提问作者Mark Nugromentry
相关产品推荐
相关产品推荐

