2017-11-26 2 views
2

오랫동안이 문제로 인해 갇혀 있었고 여기에 내 문제를 게시하기로 결정했습니다.Firebase에 여러 계정 연결하기

내 문제는 Firebase에서 계정 (Facebook 및 Google)을 병합하는 것입니다. 그들 중 하나와 독립적으로 가입하면 정상적으로 작동합니다.

처음에는 사용자가 Google과 가입하고 나중에 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) 
    }); 
  1. 첫째는 내가 이미 구글과 함께 서명
  2. 지금은 내가 전류를 얻을 수 동일한 이메일 주소와 페이스 북으로 로그인 할 사용자가 로그인하지 않았기 때문에 사용자 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

정말 감사드립니다.

답변

0

fetchProvidersForEmail을 당신에게 후 기존 Google 사용자를 파악, 당신은 기존 계정에 먼저 로그인해야합니다 :

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

을 그가 완료된 후에는 : 첫째 그래서

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

사용자 Facebook 계정을 연결하기 전에 기존 계정의 소유권을 확인해야합니다.