【问题标题】:use firebase.auth() to get a specific user's profile or use custom collections to store and retrieve profile info使用 firebase.auth() 获取特定用户的个人资料或使用自定义集合来存储和检索个人资料信息
【发布时间】:2019-09-14 23:37:43
【问题描述】:

我期待看到某种功能来获取“任何”用户的个人资料信息(“currentUser”除外)。像

firebase.auth().getUser(displayName)

firebase.auth().getUser(uid)

我找到了下面的文档,似乎没有办法使用 firebase.auth() 来实现。

https://firebase.google.com/docs/reference/js/firebase.auth.Auth.html

因此我得出结论,实现此类功能的唯一方法是将您自己的用户/个人资料信息存储在集合中并查询该集合。这是正确的还是我遗漏了什么?

感谢经验丰富的 firebase/firestore 开发人员的任何帮助。

附:我正在使用 react-native。

【问题讨论】:

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


    【解决方案1】:

    使用 Admin SDK 可以做到这一点,但客户端 SDK 则无法做到这一点,而且这很可能是故意的,以限制使用客户端 SDK 从前端获取用户信息的可能性。

    例如,使用 Node.js Admin SDK,您可以调用 getUser()getUserByEmail() 方法。

    如果您需要在前端获取用户信息,您可以编写一个Callable Cloud Function,将所需用户的uidemail 传递给它,并调用这些Admin SDK 方法之一并将方法返回的UserRecord的一个或多个属性返回到前端。

    【讨论】:

    • 非常感谢!您认为我应该更喜欢可调用的云函数,而不是将此信息存储在我自己的集合中并使用客户端 SDK 进行查询?
    • 另一件事,我意识到 getUser 和 listUsers 方法都不接受 displayName 作为参数。所以,如果我有一个搜索框,我的用户可以通过他们的 displayName 搜索其他用户,那么这些 adminSDK 功能将没有任何用处。将数据存储在我自己的集合中并使用 clientSDK 通过该集合查询用户似乎是要走的路。你怎么看?
    • 是的,在这种情况下,这似乎是要走的路。正如您所指出的,将用户信息存储在专用集合中非常普遍!请注意设置正确的安全规则!
    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多