Flutter Firestore:在iOS和 Android上都出现 [cloud_firestore/permission-denied],尽管规则已开放(如果确实如此)
我在Flutter应用中写入/读取Firestore时,遇到了持续性的 [cloud_firestore/permission-denied] 错误。这在Android和 iOS两个平台上都发生。
我到目前为止尝试过的:
- Firebase规则(Rules):为了测试,我把规则设为公开,并且我已经 发布
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
-
规则测试区(Rules Playground):在Firebase控制台的 "Rules Playground" 中,当我模拟写入时,会显示一个 Success (Green) 的结果。
-
Firebase配置: 我已经使用flutterfire configure CLI生成了firebase_options.dart。
-
初始化: 我的main.dart使用了正确的选项:
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
-
项目ID: 我已核对firebase_options.dart中的projectId与 Firebase控制台中的项目ID相符。
-
手动录入: 我可以通过Firebase控制台向集合手动添加数据,毫无问题。
-
清理与重建: 我已经多次执行flutter clean、flutter pub get,以及pod install。
错误日志:
[cloud_firestore/permission-denied] 调用方没有执行指定操作的权限。
由于它在两个平台上都会发生,且规则为true时就允许,我怀疑这不是原生配置问题,而是与应用向Firebase进行身份识别的方式有关。还有什么可能导致这个“Permission Denied”错误?
解决方法
如果不是你的规则拒绝了该操作,最有可能是项目上启用了 App Check强制执行,而Flutter客户端没有 传递有效的App Check令牌。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。