2017-10-16 10 views
0

J'essaie de lier mon numéro de téléphone à mon authentification par mot de passe. Donc, je construis mon inscription en utilisant les étapes ci-dessous:Authentification par téléphone Firebase et Liaison

  1. L'utilisateur saisit une adresse e-mail et un mot de passe.
  2. puis-je appeler firebase.auth().createUserWithEmailAndPassword(values.email, values.password)
  3. alors je dois créer un lien compte courant avec le numéro de téléphone afin que j'utilise firebase.auth().currentUser.linkWithPhoneNumber("+xxxxxxxxxx", xxx)

cependant, je ne vois aucun lien. 2 comptes créés dans ma console Firebase et l'utilisateur actuel n'ont de numéro de téléphone que dans ses détails. Lorsque je me reconnecte avec mon email et mon mot de passe et que je vérifie les détails de l'utilisateur, le numéro de téléphone n'est pas là !!!

S'il vous plaît trouver mon code ci-dessous:

onSubmit(values) { 
    this.props.firebase.auth().createUserWithEmailAndPassword(values.email, values.password).then((user) => { 
     //send recaptchaverifier 
     window.recaptchaVerifier.verify(); 

    }).catch((error) => { 
     console.log(error); 
    }); 
} 


window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('submit-button', { 
     'size': 'invisible', 
     'callback': function(response){ 
     //called when we call "window.recaptchaverifier.verify() in 
     //onSubmit function 
      var xxx = window.recaptchaVerifier; 

      this.props.firebase.auth().currentUser.linkWithPhoneNumber("+xxxxxxxx", xxx) 
       .then((verificationId) => { 
        console.log('inside'); 
        console.log(resp); 
        var verificationCode = window.prompt('Please enter the verification ' + 
         'code that was sent to your mobile device.'); 
        return firebase.auth.PhoneAuthProvider.credential(resp.verificationId, 
         verificationCode); 
       }).then((phoneCredential) => { 
       console.log("RESULT OF AUTH", phoneCredential); 
       console.log("USER INFO: ", this.props.firebase.auth().currentUser); 
       return this.props.firebase.auth().signInWithCredential(phoneCredential) 
      }).catch((error) => { 
       console.log("ERRORS: ", error); 
      }).catch((error) => { 
       console.log("ERROR", error) 
      }); 
     }.bind(this) 
    }); 

Répondre

0

Vous appelez signInWithCredential en utilisant les informations d'identification de téléphone qui crée un nouvel utilisateur. Vous devez effectuer les opérations suivantes:

firebase.auth().currentUser.linkWithPhoneNumber("+xxxxxxxx", xxx) 
    .then((confirmationResult) => { 
    // At this point SMS is sent. Ask user for code. 
    let code = window.prompt('Please enter the 6 digit code'); 
    return confirmationResult.confirm(code); 
    }) 
    .then((result) { 
    // Phone credential now linked to current user. 
    // User now can sign in with email/pass or phone. 
    }); 
    .catch((error) => { 
    // Error occurred. 
    });