代码之家  ›  专栏  ›  技术社区  ›  Witek

用户的Firebase身份验证提供程序自动更改为电子邮件。如何换回?

  •  0
  • Witek  · 技术社区  · 4 年前

    在一个Firebase项目中,我激活了多种登录方法(电子邮件、谷歌和微软),这些方法都可以正常工作。我还激活了它,每个电子邮件地址只允许一个帐户。

    当用户通过谷歌或微软成功登录,然后注销,然后通过电子邮件登录,使用与使用谷歌或微软之前相同的电子邮件地址时,就会出现问题。然后他的账户类型变为电子邮件,似乎没有回头路了。

    0 回复  |  直到 4 年前
        1
  •  0
  •   Wilfred Almeida    4 年前

    您的代码必须为不同的登录名编写不同的函数。当用户首次登录时,将其登录方法存储在firestore上。您可以从signin函数中获得此信息,该函数被触发或只需通过用户单击的按钮即可实现。然后在每次登录过程中添加一个检查,如果用户存在并且用户的当前登录方法与firestore上存储的登录方法不同,则通知用户使用正确的登录方法。

    或者,您可以让用户使用任何他们喜欢的方式进行登录,但最终在您的代码中,触发的函数将告诉您当前的登录方法,并且您将存储第一个/上一个方法。所以你可以做相应的事情。

        2
  •  0
  •   Mises Konrad    4 年前

    你正在讨论的不是它是如何工作的。当你使用Google provider登录时,你的电子邮件会自动验证,如果你尝试使用相同的电子邮件身份验证登录,则会抛出错误,表明该电子邮件帐户存在。

    如果您使用电子邮件和密码创建了第一个帐户,并且没有验证您的电子邮件地址,那么如果您使用谷歌提供商登录,并且其中包含相同的电子邮件地址,则电子邮件和密码提供商将因未经验证而消失,并且您将无法使用电子邮件结束密码登录,除非您为此电子邮件设置新密码。

    如果电子邮件经过验证,并且您使用相同电子邮件地址的谷歌提供商登录。该提供商将被添加到提供商阵列中,您将能够使用电子邮件和密码以及谷歌提供商登录。

    要将多个提供者添加到您的帐户,您可以使用 linkWithPopup() 作用如果您创建了accound with different email address,并希望能够与具有不同电子邮件地址的提供商登录此帐户,例如。

    推荐文章