当前位置: 首页 > 知识库问答 >
问题:

Firebase电话认证OTP未自动填写EditText

陆栋
2023-03-14

Firebase电话认证自动发送otp,不填写edittext。otp是在edittext中手动输入的。如何自动检测传入的验证短信并使用用户操作执行验证?

Otp.kt

private fun sendVerificationCode(phone : String){


    val options = PhoneAuthOptions.newBuilder(auth)
        .setPhoneNumber(phone)       // Phone number to verify
        .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
        .setActivity(this)                 // Activity (for callback binding)
        .setCallbacks(callbacks)          // OnVerificationStateChangedCallbacks
        .build()
    PhoneAuthProvider.verifyPhoneNumber(options)




}

private val callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks(){
    override fun onVerificationCompleted(p0: PhoneAuthCredential) {

        binding.btnOtpVerify.visible(true)
        binding.progressbarVerify.visible(false)
        val code = p0.smsCode

        if(code != null){
            binding.etOtpView.setText(code)

            VerifyVerificationCode(code)

            signInWithPhoneAuthCredential(p0)
        }
    }

    override fun onVerificationFailed(p0: FirebaseException) {
        binding.btnOtpVerify.visible(true)
        binding.progressbarVerify.visible(false)

        Toast.makeText(this@OtpVerification,p0.message,Toast.LENGTH_LONG).show()
    }

    override fun onCodeSent(p0: String, p1: PhoneAuthProvider.ForceResendingToken) {
        super.onCodeSent(p0, p1)

        binding.btnOtpVerify.visible(true)
        binding.progressbarVerify.visible(false)
        storedVerificationID = p0
        resendingToken = p1


    }

}

共有2个答案

曹钊
2023-03-14

我需要通过短信自动发送你的手机号码,并确认你的手机是否包含传真号码。

要启用自动OTP检测,您可以使用SmsRetriever API和相关的SMS用户同意API。

详细解释的文档可以在这里找到。(包含指向一个参考实现的更多链接,该实现基本上是开箱即用的,所以我这里不包括该代码。)

确保为您的用例选择合适的API。

孙夕
2023-03-14

确保您已在google上启用SafetyNet。

对于自动填充editText,使用函数onVerficationComplted中的代码

 类似资料:
  • 我基本上创建了2个Xml。一个是用户输入电话号码,然后按下按钮,它会转到OTP验证屏幕。但这里的问题是我没有收到来自Firebase的任何OTP,但5秒后我收到一条敬酒消息,验证失败。如果我甚至没有收到消息,它怎么会失败。我还尝试输入另一个号码,以便我可以手动输入代码。但是Firebase没有向我发送OTP。 基本实现---点击忘记密码- 另外,我已经在Firebase中启用了电话身份验证。 Ot

  • 我正在android应用程序中使用Firebase SDK进行手机身份验证OTP验证。这在调试版本上运行良好,但在发布版本上不起作用。 在Firebase项目中添加了我的调试SHA-1指纹。 在Firebase项目中添加了我的发布认证SHA-1指纹。 我还没有发布/发布构建到google play store。 提前谢谢

  • 我试图用手机登录。每次我输入手机号码时,它都会显示这些错误消息并退出应用程序。我使用了https://firebase.flutter.dev/docs/auth/phone留档中的代码。代码几乎与留档相同。 我正在为Java/Flatter/Firebase sdk等所有东西使用更新版本。我还在Firebase应用程序中添加了SHA1密钥,并启用了手机认证。我还尝试了物理和虚拟设备。但每次都是同

  • 我遵循了Flatter fire文档来实现firebase phone auth。我在firebase_auth的早期版本中尝试了这一点,一切似乎都正常,但我启动了一个新的应用程序,并安装了最新版本的firebase_auth,每当我调用firebase verifyNumber方法时,我的应用程序都会显示以下日志: 我的应用程序崩溃的原因可能是什么? 注意:

  • 我知道我们不能更改电子邮件验证模板或短信验证模板。 我已经设置了公共名称,它一直工作到日期。但是今天我得到了另一个文本而不是那个名称的OTP。 123345是你的验证码。egad5adfe/g 最后一个词egad5adfe/g是什么,为什么它代替了面向公众的名称? 最近几天我什么都没变。我不知道为什么会这样。有人能帮忙吗?

  • 我将SHA1和SHA-256添加到firebase控制台&以下是build.gradle文件中的依赖项。