javascript - 在 Firebase 中关联多个帐户

标签 javascript firebase firebase-authentication

我被这个问题困扰了很长时间,我决定在这里发布我的问题。

我的问题是在 Firebase 中合并帐户(Facebook 和 Google)。独立注册其中任何一个都可以正常工作。

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

这是我到目前为止所做的:

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)
  });
  1. 首先我已经注册了 google
  2. 现在我想用相同的电子邮件地址登录 Facebook 我得到当前用户 null 显然是因为用户未登录,这是错误: error:TypeError: __WEBPACK_IMPORTED_MODULE_1_firebase___default.a.auth(...).currentUser is null

我阅读了有关合并部分的文档,但仍然无法弄清楚。 https://firebase.google.com/docs/auth/web/account-linking#link-federated-auth-provider-credentials-to-a-user-account

非常感谢您的帮助。

最佳答案

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

firebase.auth().signInWithPopup(new firebase.auth.GoogleAuthProvider().setCustomParameters({login_hint: error.email})...

完成后,您可以:

firebase.auth().currentUser.linkWithCredential(error.credential)

因此用户在链接 Facebook 帐户之前首先必须验证现有帐户的所有权。

关于javascript - 在 Firebase 中关联多个帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501093/

相关文章:

javascript - 通过 JS 设置时 Bootstrap 输入验证消息不显示 php

javascript - Node.js req.params.locationid 没有抓取 ID

ios - React Native 和 RNFirebase iOS 发布版本失败

javascript - React Native 中的 Firebase 可调用函数

android - 如何禁用 Firebase Phone Auth Android 自动登录(onVerificationCompleted 回调)

Firebase JS 错误 : getToken aborted due to token change

javascript - 带有 Javascript 的 Html 范围 slider

javascript - Django Ajax - $.get 方法成功函数在没有调用任何服务器端 View 的情况下执行

rest - https ://URLs 的 Firebase 存储 REST url 访问控制

angular - 将 bool 值从 observable 传递到 observable