Próbuję napisać funkcję do ponownego uczęszczenia użytkownika FireBase, który jest zalogowany z kontem na Facebooku. Dla wiadomości e-mail tworzę poświadczenia z e-maila i hasła, ale z Facebook nie jest przechowywany dla tego użytkownika. Próbowałem znaleźć to w dokumentach, ale nie mogłem znaleźć

 let user = firebase.auth().currentUser;
 let credential = '';

    //User created with Email
    if(user.providerData[0].providerId === "password") {
      credential = firebase.auth.EmailAuthProvider.credential(
        user.email,
        this.state.password
      );
    }

   //User created with Facebook
   if(user.providerData[0].providerId === "facebook.com") {
      credential = firebase.auth.FacebookAuthProvider.credential(
         ? // <= User Email, Token 
       )
   } 
   user.reauthenticateAndRetrieveDataWithCredential(credential).then(function(){
         user.delete().then(function() {             
         }).catch(function(error) {
          console.log(error)
          }
      }).catch((error) => {
       console.log(error)
      }
2
J.lan 25 luty 2019, 22:46

2 odpowiedzi

Najlepsza odpowiedź

Na podstawie podpisu FacebookauthPovider.Credential () będziesz potrzebować tokena o oauth, aby utworzyć poświadczenie.

Możesz wyodrębnić start, gdy użytkownik loguje się:

firebase.auth().signInWithPopup(provider).then(function(result) {
  // This gives you a Facebook Access Token. You can use it to access the Facebook API.
  var token = result.credential.accessToken;
  // The signed-in user info.
  var user = result.user;
  // ...
})

Przykład został wydobywany z https://firebase.google.com/docs/auth / Web / Facebook-Login gdzie znajdziesz więcej informacji na ten temat.

2
Lucian Moldovan 26 luty 2019, 14:28

Jeśli chcesz reauthenticate użytkownika użytkownika Facebook, po prostu użyj reauthenticateWithPopup lub reauthenticateWithRedirect, załóżmy używane signInWithPopup lub signInWithRedirect, aby podpisać użytkownika z Facebookiem.

const provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().currentUser.reauthenticateWithPopup(provider)
  .then((userCredential) => {
    // User successfully reauthenticated.
  })
  .catch((error) => {
    // Error.
  });
0
bojeil 4 marzec 2019, 07:03