如何在iOS中使用Firestore检索经过身份验证的用户数据?

我正在玩Firebase,并且正在使用他们的身份验证框架以及Firestore数据库。

我的数据库模型非常简单:我想保留一个“用户”集合,该集合将为每个注册用户保存一个文档,该文档由用户的uid标识。该用户文档将包含代表用户费用的文档集合。 在their documentation之后,我在firebase控制台中设置了规则,如下所示:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId=**} {
        allow read,update,delete: if request.auth.uid == userId;
        allow create: if request.auth.uid != null;
    }
  }
}

在我的iOS应用中,当用户登录时,我想使用以下代码检索用户的费用:

  func retrieveUserExpenses() {
    guard let dbRef = userExpensesDbRef() else {
      print("Attempting to retrieve expense for unlogged user")
      return
    }

    dbRef.getDocuments { [unowned self] (snapshot,err) in
      if let err = err {
        print("Error retrieving expenses \(err)")
      } else {
        print("Retrieved expenses!")
        snapshot?.documents.forEach {
          if let expense = self.createExpenseFromDocument($0) {
            self.expenses.append(expense)
          }
        }
        self.loadedExpenses = true
      }
    }
  }

  private func userExpensesDbRef() -> CollectionReference? {
    guard let loggedInUser = AuthHandler.shared.loggedInUser() else {
      return nil
    }
    return db.collection("users").document(loggedInUser.uid).collection("expenses")
  }

问题是对getDocuments的调用将显示错误行:

  

错误检索费用错误域= FIRFirestoreErrorDomain代码= 7   “缺少权限或权限不足。”

我已经通过打印检查了以下内容: loggedInUser.uid 与我在Firebase控制台的“用户”标签中“身份验证”部分看到的相同。

对于我无法安全检索数据的任何指导或提示,我们将不胜感激。

ck19911018 回答:如何在iOS中使用Firestore检索经过身份验证的用户数据?

进入数据库->规则->

更改允许读写,如果为false;变为真实;

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if true;
      allow write: if false;
    }
  } 
}
本文链接:https://www.f2er.com/3077213.html

大家都在问