Firebase Phone Verification verifyPhoneNumber()已弃用 + 应用程序崩溃

3 浏览
0 Comments

Firebase Phone Verification verifyPhoneNumber()已弃用 + 应用程序崩溃

升级Firebase Auth(20.0.0)依赖项以进行电话验证后出现错误,PhoneAuthProvider.getInstance().verifyPhoneNumber()。\n依赖项:\nimplementation \'com.google.firebase:firebase-auth:20.0.0\'\n错误:\njava.lang.NoClassDefFoundError: Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder;\nat com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth@@20.0.0:92)\nat com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth@@20.0.0:79)\nat com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth@@20.0.0:88)\nat android.os.AsyncTask.finish(AsyncTask.java:755)\nat android.os.AsyncTask.access$900(AsyncTask.java:192)\nat android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)\nat android.os.Handler.dispatchMessage(Handler.java:107)\nat android.os.Looper.loop(Looper.java:237)\nat android.app.ActivityThread.main(ActivityThread.java:7948)\nat java.lang.reflect.Method.invoke(Native Method)\nat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)\nat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)\nCaused by: java.lang.ClassNotFoundException: Didn\'t find class \"androidx.browser.customtabs.CustomTabsIntent$Builder\"\n有人能解释一下我应该为新的依赖项做出什么改变吗?有哪些新步骤?

0
0 Comments

Firebase Phone Verification的verifyPhoneNumber()方法已经被弃用,并且应用程序崩溃的原因是没有添加必要的依赖项。为了解决这个问题,需要添加以下依赖项:

在新的Firebase auth版本中,他们做了重大更改,比如使用Recaptcha进行人类验证。它需要浏览器进行验证,因此需要添加以下依赖项,并阅读有关更改的信息。

implementation 'androidx.browser:browser:1.2.0'

添加了上述依赖项后,可以避免应用程序崩溃。

0
0 Comments

Firebase Phone Verification的verifyPhoneNumber()方法已被弃用,导致应用程序崩溃。问题的原因是应用程序的SHA-256没有在Firebase控制台注册。解决方法是更新依赖项和代码,并在Firebase控制台中注册SHA-256。

代码更新如下:

PhoneAuthProvider.verifyPhoneNumber(
     PhoneAuthOptions
             .newBuilder(FirebaseAuth.getInstance())
             .setActivity(this)
             .setPhoneNumber(phoneNumber)
             .setTimeout(60L, TimeUnit.SECONDS)
             .setCallbacks(mCallbacks)
             .build());

PhoneAuthProvider.verifyPhoneNumber(
         PhoneAuthOptions
                 .newBuilder(FirebaseAuth.getInstance())
                 .setActivity(this)
                 .setPhoneNumber(phoneNumber)
                 .setTimeout(60L, TimeUnit.SECONDS)
                 .setCallbacks(mCallbacks)
                 .setForceResendingToken(token)
                 .build());

解决方法为:

1. 更新依赖项:`implementation 'com.google.firebase:firebase-auth:20.0.0'`

2. 从Keystore或JKS文件中复制SHA-256,并在Firebase控制台的"SHA Certificate fingerprints"中添加。

3. 确保已启用"Android Device Verification"。

感谢Alex Mamo和Firebase文档的帮助,通过上述步骤解决了问题。

0
0 Comments

问题的出现的原因是因为Firebase Phone Verification的verifyPhoneNumber()方法已经被弃用,需要使用新的方法PhoneAuthOptions来代替。解决方法是将原来的代码替换为新的代码,并且添加androidx.browser:browser:1.2.0依赖,这样Firebase才能在浏览器中打开reCAPTCHA进行验证。

具体的解决步骤如下:

1. 将原来的代码:

PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phoneNumber, //phone number to be verified
            60, // validity of the OTP
            TimeUnit.SECONDS,
            (Activity) TaskExecutors.MAIN_THREAD,
            mCallBack // onVerificationStateChangedCallback
    );

替换为新的代码:

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

2. 在app/gradle文件的dependencies中添加以下依赖:

implementation 'androidx.browser:browser:1.2.0'

这样Firebase才能在浏览器中打开reCAPTCHA进行验证。

通过以上步骤,可以解决Firebase Phone Verification verifyPhoneNumber() deprecated + Application Crashed问题。

0