【问题标题】:Firebase account linking errorFirebase 帐号关联错误
【发布时间】:2017-09-05 11:22:56
【问题描述】:
因此,当您尝试使用其他身份验证方法登录应用程序时,例如,起初用户使用 Google,现在他使用 FB,并且这两个帐户拥有相同的邮件,您会收到该错误
auth/email-already-exists
问题是,如果您有 3 个以上的身份验证方法,则该错误消息不是很具体,开发处理这种情况的逻辑可能有点棘手。你如何解决这个问题?
【问题讨论】:
标签:
javascript
node.js
authentication
firebase
firebase-authentication
【解决方案1】:
email-already-exists 在 firebase-admin sdk 中抛出。我不认为它是在客户端 SDK 中抛出的。
对于客户端 SDK,在将现有帐户链接到另一个帐户时,或者使用另一个帐户中存在电子邮件的新帐户登录时,会引发以下错误:
- auth/account-exists-with-different-credential
- auth/credential-already-in-use
- auth/email-already-in-use
在上述所有内容中,错误可能包含附加字段:
- error.email:您尝试登录时使用的关联凭据的电子邮件
- error.credential:凭据本身(通常为 OAuth 凭据返回)
您可以查找现有帐户以了解存在哪些提供程序:
firebase.auth().fetchProvidersForEmail(error.email)
.then(function(providers) {
// Providers would be an array of the form:
// ['password', 'google.com']
});
对于 auth/account-exists-with-different-credential,您可以使用该提供商登录,如果需要,将 error.credential 链接到登录用户。
firebase.auth().currentUser.link(error.credential);
如果链接时发生错误(auth/credential-already-in-use),您可以直接使用该凭据登录
firebase.auth().signInWithCredential(error.credential):