发生异常。 FirebaseException([cloud_firestore/permission-denied]

Posted

技术标签:

【中文标题】发生异常。 FirebaseException([cloud_firestore/permission-denied]【英文标题】:Exception has occurred. FirebaseException ([cloud_firestore/permission-denied] 【发布时间】:2021-09-17 12:35:06 【问题描述】:

发生了异常。 FirebaseException([cloud_firestore/permission-denied]调用者没有执行指定操作的权限。)

 ~ master ● flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 2.3.0-24.1.pre, on macOS 12.0 21A5268h darwin-x64, locale en-RU)
[✓] android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for ios and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.3.3)
[✓] VS Code (version 1.57.1)
[✓] Connected device (3 available)

• No issues found!

部分代码

...
    DocumentSnapshot snapshot = await categories.doc('categories').get();
...

Cloud Firestore 规则

rules_version = '2';
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
      allow read, write: if request.auth != null;
    
  

存储规则

rules_version = '2';
service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
      allow read, write: if request.auth != null;
    
  

【问题讨论】:

【参考方案1】:

您的安全规则要求用户必须先登录 Firebase 身份验证,然后才能读取和写入数据。错误消息表明不满足此条件。

您共享的代码无法表明用户确实已登录,因此我建议您先添加一些额外代码来帮助解决此问题。例如:

assert(FirebaseAuth.instance.currentUser != null, "User must be signed in before they can read from Firestore");
DocumentSnapshot snapshot = await categories.doc('categories').get();

【讨论】:

谢谢你的回答,伙计。是的,用户没有登录。顺便说一句,我能够在它发生之前登录。 pastebin.com/nZ6JDaqs。 _AssertionError('package:foodshare/services/categoryservice.dart':断言失败:第 21 行 pos 12:'FirebaseAuth.instance.currentUser != null':用户必须先登录才能从 Firestore 读取数据) 整个代码库:github.com/organicnz/foodshare 你的仓库是私有的 是的,我很快就意识到了这一点并且已经改变了:)

以上是关于发生异常。 FirebaseException([cloud_firestore/permission-denied]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 异常:对象不存在

多个 dex 文件定义 Lcom/google/firebase/FirebaseException

调用的目标发生了异常这个异常怎么处理

调用的目标发生了异常这个异常怎么处理

c# 在WebClient 请求期间发生异常

应用程序的组件中发生了未经处理的异常,下方显示“调用的目标发生了异常”时如何解决?