当前位置: 首页 > 面试题库 >

Firebase电话身份验证和链接

丌官高远
2023-03-14
问题内容

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

  1. 用户输入电子邮件地址和密码。
  2. 然后我打电话 firebase.auth().createUserWithEmailAndPassword(values.email, values.password)
  3. 那么我需要将当前帐户与电话号码相关联,因此我正在使用 firebase.auth().currentUser.linkWithPhoneNumber("+xxxxxxxxxx", xxx)

但是,我没有看到任何链接。在我的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)
    });

问题答案:

您正在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.
  });


 类似资料:
  • keytool-list-v-keystore my_keystore.jks

  • 但我有以下错误 {“错误”:{“代码”:403,“消息”:“来自此ios客户端应用程序的请求被阻止。”,“错误”:[{“消息”:“来自此ios客户端应用程序的请求被阻止。”,“域”:“全局”,“原因”:“禁止”}],“状态”:“允许_Denied”}} 我已经实现了这一点,正如文档中所示。 下面是AppDelegate.swift的代码: 下面是ViewController.swift的代码:

  • 电话身份验证失败,出现以下异常: PlatformException(ERROR_SESSION_EXPIRED,sms代码已过期。请重新发送验证码重试。,null) 但如果我使用的电话号码不同于我的电话号码,它就会起作用。我从play store中添加了SHA-1和SHA-256指纹到firebase,并替换了google-services.json。 这是我的代码:

  • 我已经在我的应用程序中使用firebase身份验证实现了两步身份验证,其中我使用了gmail、facebook或简单的电子邮件登录进行身份验证。由于数字电话验证已经迁移到firebase,我已经实现了firebase电话身份验证,方法是将现有的登录帐户(facebook、gmail或email)与电话身份验证凭据链接起来。当与facebook和电子邮件帐户一起使用时,它工作得很好。当用户通过goo

  • 假设我需要通过Firebase电话身份验证来验证用户。但不知何故,用户没有得到otp短信。那么firebase是否提供了通过接收呼叫获取OTP的选项?