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

Android端Flutter应用Firebase App Check请求始终未验证问题

Android Flutter Firebase App Check 持续收到未验证请求的排查方案

调试模式令牌验证排查

  • 核对调试令牌完整性:确保Firebase控制台添加的令牌和应用输出的完全一致,不要有多余空格、大小写错误,复制时避免截断或多粘字符。
  • 确认kDebugMode触发逻辑:在activate代码前加日志打印,验证调试运行时是否真的使用了AndroidProvider.debug:
    print('当前App Check Provider: ${kDebugMode ? "debug" : "playIntegrity"}');
    await FirebaseAppCheck.instance.activate(
      androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity,
    );
    
    运行后查看控制台输出,确认调试模式下是否显示debug。

Safety Net & Play Integrity 配置细节检查

  • Safety Net:确认Google Cloud控制台已启用Safety Net API,且关联的API密钥与Firebase项目一致。
  • Play Integrity:检查Firebase控制台添加的SHA-256指纹是否对应当前使用的keystore(调试模式用调试keystore指纹,发布用正式签名指纹),包名必须与Firebase注册的完全匹配,大小写、拼写不能出错。
  • 生产环境只保留一种验证方式:Firebase推荐生产环境仅启用Play Integrity,同时开启Safety Net和Play Integrity可能导致冲突,可尝试只保留Play Integrity再测试。

代码执行顺序与冲突排查

  • 确保App Check激活在Firebase初始化之后:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      // 先完成Firebase初始化,再激活App Check
      await FirebaseAppCheck.instance.activate(
        androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity,
      );
      runApp(MyApp());
    }
    
  • 检查Android原生代码是否有独立配置:如果原生侧初始化了App Check,可能会覆盖Flutter的配置,需保持两侧配置一致或仅在Flutter侧配置。

缓存与环境清理

  • 执行flutter clean清理项目构建缓存,重新编译运行。
  • 卸载应用并清除设备缓存,重新安装后测试。
  • 检查Firebase控制台App Check规则:确认没有误设过严的验证规则,或禁用了对应验证提供者。

内容的提问来源于stack exchange,提问作者Ced

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:41:13