Firebase-获取用户';没有指定UID或电子邮件地址的帐户

Firebase-获取用户';没有指定UID或电子邮件地址的帐户,firebase,google-cloud-firestore,firebase-authentication,Firebase,Google Cloud Firestore,Firebase Authentication,我制作了一个Ionic Angular应用程序,它可以大量生成假数据到我的Firebase数据库中。它可以分别生成多种数据: 新的用户帐户(使用Firebase身份验证) 新的用户档案文档(在Cloud Firestore的“档案”集合中) 与Firestore中其他集合中的单个用户相关的其他类型的数据 为了知道哪些文档与哪个用户关联,我希望用户的uid属性是他/她的所有文档的名称(即“foo”集合中的用户文档位于foo/${uid}) 因此,如果我想为“foo”集合生成10个文档,我需要1

我制作了一个Ionic Angular应用程序,它可以大量生成假数据到我的Firebase数据库中。它可以分别生成多种数据:

  • 新的
    用户帐户
    (使用Firebase身份验证)
  • 新的
    用户档案
    文档(在Cloud Firestore的“档案”集合中)
  • 与Firestore中其他集合中的单个用户相关的其他类型的数据
为了知道哪些文档与哪个用户关联,我希望用户的
uid
属性是他/她的所有文档的名称(即“foo”集合中的用户文档位于
foo/${uid}

因此,如果我想为“foo”集合生成10个文档,我需要10个用户的
uid
,无论他们是谁。有可能把后者拿来吗?它相当于
admin.auth().getUser(uid)
,但没有指定的
uid
(因此给我一个随机的、未指定的用户)

我可以在生成帐户时将
uid
s存储在一个单独的文档中,然后在需要时获取它们,但我不想经历这样做的麻烦和随之而来的逻辑。

您试图从客户端应用程序中执行的操作(在Firebase Auth中列出用户)是不可能的。默认情况下,允许最终用户发现所有其他最终用户的列表将是一个巨大的安全漏洞


如果要列出用户,应使用Firebase Admin SDK编写后端代码。它有一个解决问题的方法。如果您需要从客户端应用程序调用它,您需要找到一种方法来连接它,可以使用云函数或其他后端。

Admin SDK中有一个
listUsers()
方法,它“检索用户列表”但选择不是随机的:它通常用于批量检索指定项目的所有用户。如果您想在用户上循环并检查id是否已被使用,您可以使用它。。。但我认为,与生成帐户时将UID存储在单独的Firestore文档中相比,您不会节省太多时间。这非常完美,正是我想要的。用户不需要是随机的,只是没有指定。我将是唯一一个使用那个假的数据生成应用程序的人!它的唯一目的是用假数据填充我的数据库,以帮助我在我正在开发的主应用程序上工作。这并没有改变任何事情-Firebase Auth是为安全而构建的,所以你必须在其参数范围内工作。