在Firebase上进行电话身份验证时出错 [英] Error while doing phone authentication on firebase

查看:64
本文介绍了在Firebase上进行电话身份验证时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Firebase上进行电话号码身份验证时,我因此错误消息而崩溃.请帮忙.

com.russvkm.chathut是我的包裹名称

  E/AndroidRuntime:致命异常:main流程:com.russvkm.chathut,PID:24323java.lang.NoClassDefFoundError:无法解决以下问题:Landroidx/browser/customtabs/CustomTabsIntent $ Builder;在com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth @@ 20.0.0:92)com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth @@ 20.0.0:79)com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth @@ 20.0.0:88)在android.os.AsyncTask.finish(AsyncTask.java:695)在android.os.AsyncTask.access $ 600(AsyncTask.java:180)在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:712)在android.os.Handler.dispatchMessage(Handler.java:106)在android.os.Looper.loop(Looper.java:201)在android.app.ActivityThread.main(ActivityThread.java:6826)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:547)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)原因:java.lang.ClassNotFoundException:找不到类"androidx.browser.customtabs.CustomTabsIntent $ Builder";在路径上:DexPathList [[zip文件''/data/app/com.russvkm.chathut-22XI8m2uPLL7Q6CgxXHPiw==/base.apk"]],nativeLibraryDirectories=[/data/app/com.russvkm.chathut-22XI8m2uPLL7Q6=CgxHP/arm,/system/lib,/vendor/lib]]在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)在java.lang.ClassLoader.loadClass(ClassLoader.java:379)在java.lang.ClassLoader.loadClass(ClassLoader.java:312)在com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth @@ 20.0.0:92)com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth @@ 20.0.0:79)com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth @@ 20.0.0:88)在android.os.AsyncTask.finish(AsyncTask.java:695)在android.os.AsyncTask.access $ 600(AsyncTask.java:180)在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:712)在android.os.Handler.dispatchMessage(Handler.java:106)在android.os.Looper.loop(Looper.java:201)在android.app.ActivityThread.main(ActivityThread.java:6826)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:547)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)I/Process:正在发送信号.PID:24323 SIG:9 

我的应用程序与Firebase服务器通信良好,因为在进行电子邮件身份验证时我没有发现任何错误或崩溃.

我正在使用以下方法进行身份验证

  PhoneAuthProvider.verifyPhoneNumber(PhoneAuthOptions.newBuilder(mAuth).setPhoneNumber(phoneNumber).setActivity(this).setTimeout(60,TimeUnit.SECONDS).setCallbacks(object:PhoneAuthProvider.OnVerificationStateChangedCallbacks(){重写fun onVerificationCompleted(credential:PhoneAuthCredential){dismissDialog()val smsCode = credential.smsCodeLog.i("SMS代码",smsCode !!)signInWithPhoneAuthCredential(凭据)}重写fun onVerificationFailed(p0:FirebaseException){Toast.makeText(this @ Register,p0.message,Toast.LENGTH_SHORT).show()}重写fun onCodeSent(verificationId:字符串,令牌:PhoneAuthProvider.ForceResendingToken){super.onCodeSent(verificationId,令牌)numberLinearLayout.visibility = View.GONEotpLinearLayout.visibility = View.VISIBLEstoredVerificationId =验证IDresendToken =令牌dismissDialog()}}).建造()) 

程序没有执行otpSent方法,它在没有发送otp的情况下崩溃了.

解决方案

最新的Firebase身份验证版本已进行了一些重大更改,例如用于人工验证的Recaptcha.它需要使用浏览器进行验证,请在下面添加.并了解有关更改的信息向我推荐

 实现'androidx.browser:browser:1.2.0' 

更新:如果要避免人工验证,则需要在Google云控制台中为您的Firebase项目启用Safetynet.请参阅..>

While doing phone number authentication on firebase i'm getting crash with this error message. please help.

com.russvkm.chathut is my package name

E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.russvkm.chathut, PID: 24323
        java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder;
            at com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth@@20.0.0:92)
            at com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth@@20.0.0:79)
            at com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth@@20.0.0:88)
            at android.os.AsyncTask.finish(AsyncTask.java:695)
            at android.os.AsyncTask.access$600(AsyncTask.java:180)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:201)
            at android.app.ActivityThread.main(ActivityThread.java:6826)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
         Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.browser.customtabs.CustomTabsIntent$Builder" on path: DexPathList[[zip file "/data/app/com.russvkm.chathut-22XI8m2uPLL7Q6CgxXHPiw==/base.apk"],nativeLibraryDirectories=[/data/app/com.russvkm.chathut-22XI8m2uPLL7Q6CgxXHPiw==/lib/arm, /system/lib, /vendor/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth@@20.0.0:92) 
            at com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth@@20.0.0:79) 
            at com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth@@20.0.0:88) 
            at android.os.AsyncTask.finish(AsyncTask.java:695) 
            at android.os.AsyncTask.access$600(AsyncTask.java:180) 
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712) 
            at android.os.Handler.dispatchMessage(Handler.java:106) 
            at android.os.Looper.loop(Looper.java:201) 
            at android.app.ActivityThread.main(ActivityThread.java:6826) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) 
    I/Process: Sending signal. PID: 24323 SIG: 9

my application is communicating well with firebase server as i don't find any error or crash while doing email authentication.

I'm using following approach to authenticate

PhoneAuthProvider.verifyPhoneNumber(
                PhoneAuthOptions.newBuilder(mAuth)
                        .setPhoneNumber(phoneNumber)
                        .setActivity(this)
                        .setTimeout(60,TimeUnit.SECONDS)
                        .setCallbacks(object:PhoneAuthProvider.OnVerificationStateChangedCallbacks(){
                            override fun onVerificationCompleted(credential:PhoneAuthCredential) {
                                dismissDialog()
                                val smsCode=credential.smsCode
                                Log.i("SMS code",smsCode!!)
                                signInWithPhoneAuthCredential(credential)
                            }

                            override fun onVerificationFailed(p0: FirebaseException) {
                                Toast.makeText(this@Register,p0.message,Toast.LENGTH_SHORT).show()
                            }
                            override fun onCodeSent(verificationId: String, token: PhoneAuthProvider.ForceResendingToken) {
                                super.onCodeSent(verificationId, token)
                                numberLinearLayout.visibility=View.GONE
                                otpLinearLayout.visibility=View.VISIBLE
                                storedVerificationId=verificationId
                                resendToken=token
                                dismissDialog()
                            }
                        })
                        .build()
               )

programme isn't executing otpSent method it is being crashed without sending otp.

解决方案

Some major changes have been made in the latest Firebase auth version, like Recaptcha for human verification.it needs a browser to verify so, Add below depen. and read about changes refer me

    implementation 'androidx.browser:browser:1.2.0'

Update : If you want to avoid human verification, you need to enable safetynet in google cloud console for your firebase project refer this.

这篇关于在Firebase上进行电话身份验证时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆