具有身份验证的Cloud Firestore

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有身份验证的Cloud Firestore相关的知识,希望对你有一定的参考价值。

我一直在寻找一种方法来使用身份验证与Firebase的新Cloud Firestore。我知道这是可能的,但在文档和其他地方都没有好的指南。

有人可以解释一下如何在从Fire Firestore中获取数据时提供身份验证UID吗?

这是我的安全规则:

get()

这是我目前的代码:

service cloud.firestore {
  match /users/{userID} {
    allow read, write: if request.auth.uid == userID;
  }
}

我的数据库结构只是root用户的“用户”集合,然后是每个用户的文档(以UID命名)。我想用用户的UID获取文档。

当然,由于安全规则,这会产生错误“缺少权限或权限不足”,这是预期的。

这个问题可能看起来很简单,但是如果有人能找到一些好的文档,那就太好了!

答案

你的规则应该在var db = firebase.firestore(); var docRef = db.collection("users").doc(uid); //lets say "uid" var is already defined docRef.get().then(function(doc) { if (doc.exists) { console.log("Document data:", doc.data()); } else { console.log("No such document!"); } }).catch(function(error) { console.log("Error getting document:", error); });

match /databases/{database}/documents
另一答案

我只是对UID的工作方式感到困惑。我的印象是你必须为数据库操作提供UID和auth令牌。

您实际上并没有将UID传递给数据库操作。 service cloud.firestore { match /databases/{database}/documents { match /users/{userID} { allow read, write: if request.auth.uid == userID; } } } 对象存储身份验证状态。您可以简单地登录(firebase),并在操作完成后(使用check the Firebase docs to read how to do this承诺声明),您可以简单地进行操作。

此外,要让用户每次访问您的应用时都不登录,您可以.then

以上是关于具有身份验证的Cloud Firestore的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs,Cloud Firestore上传任务 - 身份验证错误:错误:套接字挂起

如何在 Firestore Cloud Functions 上使用 Apollo Server GraphQL 在 TypeScript 中处理身份验证

Flutter 使用 Cloud Firestore 和 Firebase Auth 存储用户数据

Firestore身份验证失败

如何使用flutter cloud_firestore包传递firestore auth token

如何在flutter的firestore中使用uid更新用户数据