0

因此,当您尝试使用其他身份验证方法登录应用程序时,例如,首先用户使用Google,现在他使用FB并且这两个帐户具有相同的邮件,则会得到该错误Firebase帐户链接错误

auth/email-already-exists

的事情是,如果你有3+身份验证方法,该错误消息的心不是很具体,它可能是一个有点棘手开发处理这种情况的逻辑。你如何解决这个问题?

回答

4

电子邮件已存在是在firebase-admin sdk中引发的。我不认为它在客户端SDK中抛出。

  • 认证/帐户存在 - 与 - : 对于客户端SDK,以下错误将现有的帐户链接到另外一个时,或在电子邮件中另一个存在一个新的帐户登录抛出不同-凭证
  • AUTH /凭据已经在使用中
  • AUTH /电子邮件已经在使用中

在所有上述的,误差可能包含额外的字段:

  • error.email:凭证自身(通常这是返回OAuth认证)

您可以查找现有的:你想用

  • error.credential登录相关凭证电子邮件帐户查明供应商为它存在什么:

    firebase.auth().fetchProvidersForEmail(error.email) 
        .then(function(providers) { 
        // Providers would be an array of the form: 
        // ['password', 'google.com'] 
        }); 
    

    在认证/帐户存在与 - 不同的制证,然后可以与供应商登录,并根据需要链接error.credential在签署用户。

    firebase.auth().currentUser.link(error.credential); 
    

    如果连接时发生错误(AUTH /凭据已在使用中),您可以直接与证书

    firebase.auth().signInWithCredential(error.credential): 
    
    登录