Flutter集成AppCheck后iOS模拟器读写Firestore报permission-denied问题
iOS模拟器运行Flutter应用触发App Check权限报错解决方案
你遇到的permission-denied报错确实是缺iOS模拟器专属的App Check调试配置导致的,和iOS调试提供者的校验逻辑完全匹配,Flutter在iOS平台的App Check调试配置和原生iOS逻辑一致,具体操作步骤如下:
- 配置Xcode启动参数
打开Flutter项目下的ios/Runner.xcworkspace文件,选中Runner目标,依次进入Product > Scheme > Edit Scheme,选择Run分类下的Arguments标签,在启动参数列表中添加-FIRDebugEnabled,保存配置即可。 - 注册调试令牌到Firebase控制台
重新启动模拟器上的应用,此时Xcode控制台会打印App Check调试提供者启用的日志,日志中附带一串临时调试令牌,复制该令牌后打开Firebase控制台的App Check板块,选中对应的iOS应用,在调试令牌管理页添加这串令牌,按需设置有效期。 - 修正Flutter端App Check激活逻辑
你当前的激活代码没有区分运行环境,需要补充Apple平台的提供者配置,导入foundation包后按以下逻辑调用:
该配置会保证正式发布环境走官方App Attest校验,本地调试环境自动使用调试提供者,不会出现校验失败问题。// 需提前导入 import 'package:flutter/foundation.dart'; await FirebaseAppCheck.instance.activate( appleProvider: kReleaseMode ? AppleProvider.appAttest : AppleProvider.debug, );
注意:如果你重置了iOS模拟器、卸载重装了应用,系统会生成新的调试令牌,需要重新到Firebase控制台注册新令牌,否则会再次触发权限报错。
配置完成后重启应用即可正常读写Firestore,你现有的Firestore安全规则不需要做任何调整,之前的规则配置是正常的。
内容的提问来源于stack exchange,提问作者user6097845
相关产品推荐
相关产品推荐

