如果抛出auth / account-exists-with-different-credential,我会询问什么密码

时间:2017-01-11 05:50:02

标签: firebase-authentication

以下是我的方案,如果用户先在我的网络应用程序中使用Google提供商登录,之后有时相同的用户可能会尝试使用Facebook提供商登录,现在如果用户的Facebook提供商电子邮件ID与以前的google提供商邮件ID在firebase中,它会抛出错误,例如" account-exists-with-different-credential"在这种情况下,firebase将向我们提供facebook提供商的电子邮件ID,并指示我们获取"向用户询问他的密码。"我会问他们什么密码,如果用户必须输入Gmail密码,用户就可以在第三方网站输入他们的Gmail密码

1 个答案:

答案 0 :(得分:0)

在您的情况下,您还将在auth / account-exists-with-different-credential错误中获取电子邮件和凭据对象(facebook凭证)(error.credential和error.email)。然后你可以打电话

auth.fetchProvidersForEmail(error.email)

获取与该电子邮件对应的现有提供商列表。在这种情况下,您将获得一个数组['google.com']。使用其中一个提供程序,您可以将用户登录到该提供程序。

auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());

您还可以在google提供程序中将login-hint:error.email设置为自定义OAuth参数。

用户登录后。然后将之前的facebook凭据链接到该用户:

currentUser.link(error.credential);

您现在将Facebook帐户链接到现有的Google帐户。下次用户尝试通过Facebook登录时,不会再次抛出错误。