如何解决Firebase 电话身份验证 OTP 不自动填充 EditText
Firebase 电话身份验证自动发送 otp 不填写编辑文本。 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
}
}
解决方法
确保您已在 google 上启用 SafetyNet thing this。
对于自动填充 editText 使用函数 onVerificationCompleted
中的代码
据我所知,您正在使用 Firebase PhoneAuth 来验证电话号码并通过 Firebase 服务器发送 OTP,您需要一个工作流程来检测包含 OTP 的传入 SMS 并使用此 OTP 自动填充您的 EditText。
要启用自动 OTP 检测,您可以使用 SmsRetriever API 和相关的 SMS User Consent API。
可以在 here 找到解释清楚的文档。 (包含指向几乎开箱即用的参考实现的更多链接,因此我不在这里包含该代码。)
请务必为您的用例选择合适的 API。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。