我按顺序调用这些函数(javascript'Firebase'):
firebase
.auth()
.signInWithEmailLink(email, url)
.then(userCred => {
return firebase.firestore().collection('users').doc('someDocID').get()
....
我在firestore中设置了安全规则,只有当文档中的电子邮件字段等于auth email:Allow get:if request.auth.token.email==resource.data.email
时,才允许读取“users/:docid”
问题是在get()
上会出现权限缺失或不足的错误。当然,数据库中的电子邮件是正确的,所以唯一的问题可能是request.auth.token.email
无效。是否登录(使用任何登录函数),即使解析,也不能保证auth令牌被更新并可以立即使用?
当用户主动登录时(通过调用任一signinwith...
方法),客户端将获得一个ID令牌,其中包含该用户的最新值。该ID令牌的有效期为一小时,然后由客户机/SDK自动刷新。
因此,在signin...
调用之后,概要文件应该包含最新的值。如果你认为哪里出了问题,我建议在调用FireStore之前记录这些值。
null 谢了!
我正在开发一款iOS应用程序,它有(哇,惊喜!)聊天功能。整个应用程序大量使用Firebase工具,对于数据库,我正在使用新的云Firestore解决方案。 目前我正在使用数据库规则加强安全性,但我对自己的数据模型有点挣扎:)这可能意味着我的数据模型选择不当,但我真的很满意,除了实现规则部分。 模型的对话部分如下所示。在我的数据库的根目录下,我有一个集合: 然后我对每个对话都有一个子集合,称为消息
null 基本上数据结构如下所示: 问题是,我应该写什么安全规则来允许用户只在他们所属的组中(拥有组密钥)读取、创建和更新数据?同时,如何禁止用户找出其他群组的密钥?
我想检查用户的用户名和电话号码是否唯一。我已经用FirebaseFirestore实现了它。getInstance()。集合(“用户”)。whereEqualTo(“电话”,ph)。get()。addOnCompleteListener(…) 这是我的firestore规则: 代码运行良好,没有问题。我在使用方法和请求之前检查这个。啊。uid将始终为空。要使代码工作,我必须保持
我目前正试图建立一个小型应用程序上的firebase作为它的评估。它看起来很有趣,而且超级高效,但我对firestore规则有一个问题。 我有一个集合(游戏),其对象如下所示: 它没有像预期的那样起作用。我希望它允许我列出的文档,但是如果有一个文档我无法,我希望获得“缺少或不足的权限”。我所能做的是列出所有文档,但不直接读取其中一些文档(规则在试图获取单个文档时有效,但在从集合中列出文档时无效)。
将true更改为request.auth.uid!=null后,它会出现错误: 我可以弄清楚获取用户数据,比如:电子邮件和密码或用户id令牌,如何使用用户数据解决上述错误?