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
相关产品推荐
相关产品推荐

