Firebase Phone身份验证和链接

时间:2017-10-16 05:23:33

标签: javascript reactjs firebase firebase-authentication

我正在尝试将我的电话号码与我的电子邮件密码验证相关联。所以我使用以下步骤构建我的注册:

  1. 用户输入电子邮件地址和密码。
  2. 然后我致电firebase.auth().createUserWithEmailAndPassword(values.email, values.password)
  3. 然后我需要将当前帐户与电话号码相关联,因此我正在使用firebase.auth().currentUser.linkWithPhoneNumber("+xxxxxxxxxx", xxx)
  4. 然而,我没有看到任何链接。在我的firebase控制台中创建了2个帐户,当前用户只在其详细信息中有电话号码。当我再次使用电子邮件和密码登录并查看用户详细信息时,电话号码不存在!!!

    请在下面找到我的代码:

    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)
        });
    

1 个答案:

答案 0 :(得分:2)

您正在使用创建新用户的电话凭据呼叫signInWithCredential。您需要执行以下操作:

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.
  });
相关问题