如何从 Firebase 数据库中获取经过身份验证的用户?

Posted

技术标签:

【中文标题】如何从 Firebase 数据库中获取经过身份验证的用户?【英文标题】:How to get authenticated users from firebase database? 【发布时间】:2016-11-17 13:43:08 【问题描述】:

我正在创建应用程序,我将在其中使用 Firebase 消息服务。消息传递工作正常,但现在我希望在两个用户之间实现。

我相信我需要为每个用户提供身份验证,然后搜索他们的连接(通过他们的社交网络连接或他们的邮件 ID 搜索他们的朋友)。

我设法使用 Auth.GOOGLE_SIGN_IN_API 和 AppInvite.API 在我的应用程序中创建 Google+ 身份验证,但连接到 firebase 中的其他用户却没有任何线索,然后我浏览了这些链接 Udacity tutorial 和 Codelabs tutorial 以及 Firebase guides . (教程解释了同样的事情,每个人都使用电子邮件提供商进行身份验证,而不是通过 Google+ 登录。事实上,当我最初尝试通过这些程序登录 Google+ 时,它不起作用,但电子邮件提供商正在工作。)

到目前为止,电子邮件提供商对我也有好处,但仍然不知道如何通过 Firebase 连接两个用户。我连接了两个用户,它显示在我的 Firebase 身份验证控制台中,但是如何一对一连接两个用户?

有什么线索吗??

【问题讨论】:

【参考方案1】:

要在社交网络中的两个用户之间建立联系,通常其中一个必须输入有关另一个用户的一些“秘密”详细信息。最常见的是你必须输入你朋友的电子邮件地址,然后系统会告诉你它有一条与该电子邮件地址匹配的记录。

您可以在 Firebase 上实现这样的系统,方法是拥有一个包含相应 uid 的电子邮件地址列表:

userLookup
  "ari@***,com": "uidOfAri"
  "puf@***.com": "uidOfPuf"

现在,当我输入您的电子邮件地址时,我可以找到您的 UID(从而与您联系)。

为确保上述内容的安全,您只需授予特定用户的读取权限:


  "rules": 
    "userLookup": 
      "$user": 
        ".read": true
      
    
  

使用这种结构,您可以读取每个特定用户,但无法搜索用户列表。因此,如果我知道您的完整电子邮件地址,我只能找到您的 uid(并因此连接)。

【讨论】:

是的,我需要有关从电子邮件 ID 中获取 UID 的帮助。如何在 android 中使用 Firebase 来做到这一点,没有找到任何相关文档。如果我在本地保存 UID,如何仅在 Firebase 中向该 UID 发送消息? 您不能使用普通的 Firebase“直接”连接两个用户。你读过firebase.google.com/docs/cloud-messaging 吗?此外,在这种特定情况下,使用 sendbird.com 等不同的解决方案可能会更容易

以上是关于如何从 Firebase 数据库中获取经过身份验证的用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 firebase_auth 获取令牌

在 Flutter 的下拉列表中从 Firebase 获取经过身份验证的用户列表

如何从 Firebase 身份验证中获取用户 ID

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?

如果其中包含来自更多经过应用程序身份验证的用户的数据,我如何遍历Firebase表?

如何使用经过身份验证的 id 令牌和数据库规则保护 Firebase Cloud Function HTTP 端点?