firebase - firebase 的短信代码不匹配
问题描述
我使用 firebase 电话身份验证创建了一个号码发送活动和确认/otp 片段。当定向到确认页面时,来自 Firebase 的 6 位短信代码会发送到输入的电话号码,但无论我做什么,输入的 edittext 和来自 firebase 的代码都不匹配。当我将编辑文本留空时,它会重定向到我想要的片段,就好像它是正确的一样。你能帮我在哪里犯错吗?我在确认片段中的代码如下;
class FragmentRegisterTelOnay : Fragment() { varcomingNumber = "" lateinit var auth : FirebaseAuth lateinit var callbacks : PhoneAuthProvider.OnVerificationStateChangedCallbacks var verifyID = "" varcomingCode : String = "" override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState :捆绑?):查看?{ var view = inflater.inflate(R.layout.fragment_register_activity_phone,container,false) view.tvKullaniciTelNo.setText("+90"+comingNumber) auth = Firebase.auth setupCallBack()
view.ileriButton.setOnClickListener {
if (comingCode.equals(editTextOnayKodu.text.toString())){
EventBus.getDefault().postSticky(EventBusDataEvents.KayitBilgileriniGonder("+90$comingNumber",null,verificationID,comingCode))
val transaction = requireActivity().supportFragmentManager.beginTransaction()
transaction.replace(R.id.telefonOnayKod,FragmentRegisterDetailPhone())
transaction.addToBackStack("TelOnayfragmentEklendi")
transaction.commit()}
else{
Toast.makeText(activity,"Wrong Code",Toast.LENGTH_LONG).show()
}
}
val options = PhoneAuthOptions.newBuilder(auth)
.setPhoneNumber("+90"+comingNumber) // Phone number to verify
.setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
.setActivity(requireActivity()) // Activity (for callback binding)
.setCallbacks(callbacks) // OnVerificationStateChangedCallbacks
.build()
PhoneAuthProvider.verifyPhoneNumber(options)
return view
}
private fun setupCallBack() {
callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
override fun onVerificationCompleted(credential: PhoneAuthCredential) {
if(!credential.smsCode.isNullOrEmpty()){
comingCode = credential.smsCode!!
progressBarOnayKod.visibility = View.GONE
Log.e("Success","on verificationcompleted sms: " + comingCode)}
else{
Log.e("Error","onverification has not completed")
}
}
override fun onVerificationFailed(e: FirebaseException) {
Log.e("Error: ",e.localizedMessage)
progressBarOnayKod.visibility = View.GONE
}
override fun onCodeSent(verificationId: String,token: PhoneAuthProvider.ForceResendingToken) {
verificationID = verificationId
progressBarOnayKod.visibility = View.VISIBLE
Log.e("Codesent","oncodesent worked")
}
}
}
@Subscribe (sticky = true)
internal fun onTelefonEvent(kayitBilgileri: EventBusDataEvents.KayitBilgileriniGonder){
comingNumber = kayitBilgileri.telNo.toString()
Log.e("test",comingNumber)
}
override fun onAttach(context: Context) {
super.onAttach(context)
EventBus.getDefault().register(this)
}
override fun onDetach() {
super.onDetach()
EventBus.getDefault().unregister(this)
}
}
解决方案
首先将 sha1 设置为 firebase 设置并生成 google config.json 然后添加到 poject 的根目录并添加到 build.gradle 依赖项。它会正常工作
资源:https ://github.com/firebase/quickstart-android/issues/283
推荐阅读
- c# - EF Core 查询存储过程映射到类型
- ios - ios静态库运行脚本与xcode 10有什么变化吗?
- php - 使用 Angular js 自定义指令在单击按钮时加载不同的 html 视图
- shopify - Zipify 一键追加销售如何运作?什么是高级架构?
- sql-server - 无法通过 typeorm 登录 mssql
- ios - 我应该如何实现 point(inside:with:)?
- android - 白天模式状态栏/控件在重新创建后主题不一致的问题
- chart.js - Chart.js 和 dygraphs JavaScript 库在性能和寿命方面的差异
- node.js - NodeJS:Passport JWT(v4.0.0) 无法从 POSTMAN Rest Client 验证用户,始终返回 Unauthorized
- perl - check_megaraid_sas nagios 插件说明