【问题标题】:Firebase - fetching a user's account without specifying UID nor email addressFirebase - 在不指定 UID 或电子邮件地址的情况下获取用户帐户
【发布时间】:2020-09-23 18:52:54
【问题描述】:

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

  • 新的user accounts(使用 Firebase 身份验证)
  • 新的 user profile 文档(在 Cloud Firestore 的“配置文件”集合中)
  • 与 Firestore 中其他集合中的个人用户相关的其他类型的数据。

为了让我知道哪些文档与哪个用户相关联,我希望用户的 uid 属性是他/她所有文档的名称(也就是“foo”集合中的用户文档位于foo/${uid})。

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

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

【问题讨论】:

  • Admin SDK中有一个listUsers()方法,“获取用户列表”但选择不是随机的:一般用于批量获取指定项目的所有用户.如果你想遍历用户并检查一个 id 是否已经被使用,你可以使用它......但我认为你不会在生成时将 uids 存储在单独的 Firestore 文档中节省很多时间帐户。
  • 太完美了,正是我想要的。用户不需要是适当的随机,只是未指定。

标签: firebase google-cloud-firestore firebase-authentication


【解决方案1】:

您无法通过客户端应用执行操作(在 Firebase 身份验证中列出用户)。默认情况下,允许最终用户发现所有其他最终用户的列表将是一个巨大的安全漏洞。

如果您想列出用户,您应该使用 Firebase Admin SDK 编写后端代码。它有办法list all users。如果您需要从客户端应用程序调用它,您将需要自己找到一种方法来连接它,可能使用 Cloud Functions 或其他一些后端。

【讨论】:

  • 我将是唯一使用该假数据生成应用程序的人!它的唯一目的是用虚假数据填充我的数据库,以帮助我开发我正在开发的主要应用程序。
  • 这并没有真正改变任何事情 - Firebase 身份验证是为安全而构建的,因此您必须在其参数范围内工作。
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2011-12-29
  • 2018-03-06
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多