电话身份验证创建新帐户并断开 Firebase 上的链接

Posted

技术标签:

【中文标题】电话身份验证创建新帐户并断开 Firebase 上的链接【英文标题】:Phone authentication creates new account and breaks link on firebase 【发布时间】:2019-05-10 16:38:42 【问题描述】:

我正在根据给定的代码将电子邮件与 Firebase 上经过电话身份验证的用户帐户相关联。我首先使用电话短信身份验证创建一个新用户,然后尝试将电子邮件与该用户相关联,因为我还想让用户使用电子邮件登录。对于电子邮件,我使用电子邮件链接验证。发生链接,我可以在仪表板中看到用户的两种身份验证方法。现在,当我注销并尝试使用电子邮件链接身份验证登录时,firebase 会创建一个新用户,现在我有两个用户,一个通过电话,另一个通过电子邮件。

 val credential:AuthCredential = EmailAuthProvider.getCredential(email,link)
mAuth!!.currentUser?.linkWithCredential(credential)?.addOnCompleteListener(this)  task ->
if (task.isSuccessful) 
       Log.d(TAG, "linkWithCredential:success")
       val user = task.result?.user

 else 
       Log.w(TAG, "linkWithCredential:failure", task.exception)
       Toast.makeText(baseContext, "Authentication failed.",
       Toast.LENGTH_SHORT).show()


几个小时以来,我一直在研究 Firebase 文档,但不知道为什么会发生这种情况。我也找不到与此相关的任何帖子。 任何指针表示赞赏。

【问题讨论】:

【参考方案1】:

您计划在应用程序中使用电话和电子邮件进行两步身份验证。请看这个问题并回答https://***.com/a/44966449/7672400。 我已经实现了相同的。可能对你有帮助

【讨论】:

我正在尝试根据 google 文档链接该帐户,并且可以正常工作,但是如果我在此之后使用手机重新登录,则使用电子邮件重新登录会破坏链接 我不确定你的方法是否有效,因为上述问题已被 firebase 支持团队接受,因为他们可以重现它,这肯定是 firebase 的问题。 @vishaldharankar 这是出于安全原因。一年前我研究过同样的问题。由于电子邮件帐户被视为主要身份验证源。如果您尝试使用 fb 执行相同的过程,然后使用相同的帐户进行 google auth。它将创建两个不同的帐户。我只是在寻找我已阅读答案的参考 必须有一些解决方案

以上是关于电话身份验证创建新帐户并断开 Firebase 上的链接的主要内容,如果未能解决你的问题,请参考以下文章

如何在启用电话身份验证的情况下导出 Firebase 用户帐户

firebase react-native:通过电话身份验证将匿名用户转换为永久用户

Firebase 电话身份验证失败

来自已经过身份验证的帐户的Firebase createUserWithEmailAndPassword()

处理 Firebase 身份验证和数据库实时之间事务的最佳方式

Firebase 身份验证 Flutter 中的电话号码