Javascript 链接Firebase中的多个帐户

Javascript 链接Firebase中的多个帐户,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,我已经被这个问题困扰了很长时间,我决定把我的问题贴在这里 我的问题是合并Firebase中的帐户(Facebook和Google)。与他们中的任何一个单独签约都可以 起初,当用户注册谷歌,后来注册Facebook(与谷歌有相同的电子邮件地址)时,会抛出错误。正如您在下面的代码中看到的那样,我成功地处理了这个错误,但我不知道如何合并这两个帐户 以下是我迄今为止所做的工作: facebookSignin: function() { var self = this firebase.auth(

我已经被这个问题困扰了很长时间,我决定把我的问题贴在这里

我的问题是合并Firebase中的帐户(Facebook和Google)。与他们中的任何一个单独签约都可以

起初,当用户注册谷歌,后来注册Facebook(与谷歌有相同的电子邮件地址)时,会抛出错误。正如您在下面的代码中看到的那样,我成功地处理了这个错误,但我不知道如何合并这两个帐户

以下是我迄今为止所做的工作:

facebookSignin: function() {
  var self = this
  firebase.auth().signInWithPopup(facebookProvider).then(function(result) {
      var token = result.credential.accessToken;
      var user = result.user;
      self.registerProfile()
  }).catch(function(error) {
      var errorCode = error.code;
      var errorMessage = error.message;
      console.log("ERROR:" + error)
      console.log("email is : " + error.email)

      if (errorCode == 'auth/account-exists-with-different-credential') {
          firebase.auth().fetchProvidersForEmail(error.email).then(providers => {
                 //providers returns this array -> ["google.com"]
                 console.log("Providers:" + providers)
                 console.log("Credential: " + JSON.stringify(error.credential))

                 firebase.auth().currentUser.link(error.credential).then(function(user) {
                      console.log("Account linking success", user);
                  });
          }).catch(function(error){
              console.log("error:" + error)
          })
      }
      console.log("error code:" + error.code+ "error msg:" + error.message)
  });
  • 首先我已经和谷歌签约了
  • 现在我想用相同的电子邮件地址登录Facebook 很明显,由于用户未登录,我得到了当前用户null,这是错误:
    错误:TypeError:\uuuuu WEBPACK\u IMPORTED\u MODULE\uu 1\u firebase\uuuu default.a.auth(…)。当前用户为null
    我阅读了有关合并部分的文档,但仍然无法理解这一点


    非常感谢您的帮助。

    在您
    获取ProvidersForemail
    并找出现有的Google用户后,您必须首先登录到该现有帐户:

    firebase.auth().signInWithPopup(new firebase.auth.GoogleAuthProvider().setCustomParameters({login_hint: error.email})...
    
    完成后,您可以:

    firebase.auth().currentUser.linkWithCredential(error.credential)
    
    因此,在链接Facebook帐户之前,用户首先必须验证现有帐户的所有权