Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase帐户链接错误_Javascript_Node.js_Authentication_Firebase_Firebase Authentication - Fatal编程技术网

Javascript Firebase帐户链接错误

Javascript Firebase帐户链接错误,javascript,node.js,authentication,firebase,firebase-authentication,Javascript,Node.js,Authentication,Firebase,Firebase Authentication,因此,当您尝试使用其他身份验证方法登录应用程序时,例如,最初用户使用Google,现在他使用FB,并且这两个帐户具有相同的邮件,您会遇到该错误 auth/email已经存在 问题是,如果您有3+auth方法,那么错误消息不是很具体,开发处理这种情况的逻辑可能有点棘手。如何解决此问题?firebase admin sdk中会抛出已存在的电子邮件。我不认为它是在客户端SDK中抛出的。 对于客户端SDK,将现有帐户链接到另一个帐户时,或使用电子邮件存在于另一个帐户中的新帐户登录时,将引发以下错误:

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

auth/email已经存在


问题是,如果您有3+auth方法,那么错误消息不是很具体,开发处理这种情况的逻辑可能有点棘手。如何解决此问题?

firebase admin sdk中会抛出已存在的电子邮件。我不认为它是在客户端SDK中抛出的。 对于客户端SDK,将现有帐户链接到另一个帐户时,或使用电子邮件存在于另一个帐户中的新帐户登录时,将引发以下错误:

  • 存在具有不同凭据的身份验证/帐户
  • 身份验证/凭据已在使用中
  • 身份验证/电子邮件已在使用中
在上述所有情况下,错误可能包含其他字段:

  • error.email:您尝试登录的关联凭据的电子邮件
  • error.credential:凭证本身(通常为OAuth凭证返回)
您可以查找现有帐户,以了解该帐户存在哪些提供商:

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);
如果链接时发生错误(身份验证/凭据已在使用),您可以直接使用该凭据登录

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