【问题标题】:Is it safe to allow multiple Firebase accounts with the same email address?允许多个 Firebase 帐户使用同一个电子邮件地址是否安全?
【发布时间】:2016-11-12 04:55:47
【问题描述】:

我正在努力将 Firebase 身份验证添加到使用“联合”提供商(即 Google、Facebook 等)的网络应用程序中。

我立即发现了默认设置“每个电子邮件地址一个帐户”的局限性。例如,对于 Google 和 Facebook 拥有相同电子邮件地址的用户,立即只能使用其中一个,而不能同时使用两者。

The Firebase help page 警告我:“如果您确实允许多个帐户使用相同的电子邮件地址,则您的应用程序的登录流程不能依赖电子邮件地址来识别用户帐户。”

我不知道这是否是我需要担心的事情。替代方案似乎是非常类似于意大利面条的代码,用于获取第二个提供者的凭据,然后将其填充到第一个提供者的凭据中。

【问题讨论】:

    标签: facebook google-chrome firebase firebase-authentication


    【解决方案1】:

    允许用户从他们的 Facebook 或 Google 帐户使用相同的电子邮件地址登录是一项名为account linking 的强大功能。

    如果您发现帐户链接(或与登录相关的其他流程)工作起来很棘手,我建议您考虑使用 FirebaseUI,它有 webiOSAndroid 风格并处理这些流程给你。

    【讨论】:

    • 我试图弄清楚是否通过允许多个帐户使用同一电子邮件来解决它是否会出现问题。系统似乎已经容易受到同一用户的两个帐户的影响,例如,如果该用户在 FB 和 Google 上使用不同的电子邮件。系统永远不会检测到它是同一个人使用两个不同的身份验证提供程序,不是吗?
    【解决方案2】:

    我发现这是一个棘手的问题。

    Firebase 有两种模式:

    1. allow multiple accounts per email:TRUE -- 启用此功能,您可以同时使用 Facebook 和 Gmail 登录,但是他们不会向您发送用户的电子邮件,他们只会发送 gmail.uid 和 facebook.uid 并且无法知道它们是相关的

    2. allow multiple accounts per email:FALSE -- firebase 会向您发送电子邮件信息,但如果您使用 google 登录,则无法使用 facebook 登录(因为 facebook 是“不受信任的提供商”) -- 那为什么还要显示按钮?

    【讨论】:

      【解决方案3】:

      似乎还有另一个与此设置相关的“问题”。我一开始是禁用该设置的,因为无论如何我只提供了 Google 登录。

      几个月(和几千名注册用户)过去了,我实施了更多登录方法并决定启用该设置,让用户使用来自多个提供商的相同电子邮件登录,而无需链接它们。

      但是,现在看来,当使用与以前相同的 Google 帐户登录时,uid 与禁用该设置时的不同。这导致用户设置被重置,因为我的后端依靠 Firebase 的 uid 来识别用户。

      因此,您最好注意这一点,也许计划一些方法来检测这一点并更新您后端的 uid,也许可以通过从提供程序数据中查找 uid(这对于相同的 Google 帐户,无论设置如何)。

      【讨论】:

        猜你喜欢
        • 2017-06-14
        • 1970-01-01
        • 2015-08-30
        • 2014-08-06
        • 2017-12-22
        • 2022-11-25
        • 2020-05-05
        • 1970-01-01
        • 2015-01-23
        相关资源
        最近更新 更多