如果没有帐户,如何将用户信息存储在Firestore中?

时间:2019-04-16 04:35:13

标签: firebase-authentication google-cloud-firestore

我正在尝试使用firebase auth和firestore创建一个应用程序,可以通过电子邮件邀请新用户从事项目。问题是,我不知道在拥有临时用户之前存储临时用户项目权限的最佳方法。我希望通过电子邮件发送邀请的用户在打开发送给他们的链接时可以访问该项目。

我尝试了两种不同的方式

为项目中的每个用户提供一个子集合文档

/project/{projectId}/users/{userId}

邀请新用户时,将userId设置为其电子邮件,具有云功能,该云功能在创建新用户向用户发送邀请电子邮件时触发。用户打开链接后,它删除了他们的用户文档,并且运行了一个云功能,该功能创建了一个具有用户ID的新文档,因为他们自通过身份验证以来就拥有过一次。

这有效,但是留下了10秒钟的时间,用户无法与项目进行交互,因为用于创建新用户文档的云功能正在运行。同样,这似乎是一种糟糕的方法。

拥有一个包含所有用户信息的文档

/project/{projectId}/users/users

users:{
  roles: {
    users_id: 'admin',
    new_user_email: 'admin',
  }
}

我不能上班的那个,因为firestore不允许您创建一个带有句点的密钥,但是如果有办法解决的话,它也可以工作。我还设置了Firestore安全规则,使规则得以实现,因此他们只能编辑其中有密钥的字段,如果不是编辑者/管理员,则只能编辑其电子邮件。

1 个答案:

答案 0 :(得分:0)

请考虑首先在Firebase身份验证中创建anonymous account,而无需用户输入。它将收到一个UID,可用于存储该帐户的数据。然后,您可以在注册或登录成功后convert that account to a normal account

由于您没有说明您使用的是哪个移动平台,因此我将您链接到了Web文档,但是每个程序的过程通常是相同的。