Firebase:将Facebook帐户与现有用户相关联

时间:2017-08-24 21:18:22

标签: firebase firebase-authentication facebook-login

我有一个当前数据库,其中包含Firebase中的活跃用户,可以使用user / pwd登录,但现在我正在实施facebook登录,我意识到将facebook帐户与现有用户链接的唯一方法是用户已使用user / pwd登录,但登录前未登录。

我的应用程序中有两个按钮(使用fb和电子邮件登录)但如果我尝试使用现有用户的同一电子邮件使用fb登录,我将收到以下错误 auth / account-exists- with-different-credential ,文档说为了解决这个问题,用户需要先登录然后链接。

你知道是否有办法链接这两个帐户但是没有先登录,我的意思是,从登录视图?

1 个答案:

答案 0 :(得分:7)

您需要在链接前先登录用户。如果您想确保它是同一个用户,这一点很重要。否则,您可以在Firebase控制台中切换到每封电子邮件的多个帐户。 解决此问题的方法是,当您收到错误auth/account-exists-with-different-credential时,在您使用Facebook登录后该错误将包含error.emailerror.credential,并且该帐户已作为密码帐户存在。 然后,使用该电子邮件的提供者ID列表调用firebase.auth().fetchProvidersForEmail(error.email)解析的['password']。在这种情况下,它将包含signInWithEmailAndPassword(error.email, password)。然后,您要求用户提供密码。您致电firebase.auth().currentUser.linkWithCredential(error.credential)登录原始用户。然后,您可以调用{{1}}将Facebook凭据链接到密码帐户。现在两个帐户都已合并,用户可以使用其中任何一个登录。