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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:37:43