在Android中使用Firebase Phone Auth时应用程序崩溃 [英] app crash while using firebase phone Auth in android

查看:35
本文介绍了在Android中使用Firebase Phone Auth时应用程序崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题与其他任何问题都不相似。我已经尝试了App crashes with firebase phone autherror while getting firebase phone auth OTP

中的许多解决方案

Android app crashes on firebase phone authentication,但都不起作用。

在我的Ffltter应用程序(Android)中,我使用的是Firebase手机身份验证。当我调用Firebase的‘verifyPhoneNumber’方法发送OTP时,我的应用程序崩溃并退出,没有留下错误消息。

以下是我的代码

 final FirebaseAuth _auth = FirebaseAuth.instance;
 Future sendOTP(String mobNo, BuildContext context, UserData _userData) async {
 try {
  _auth.verifyPhoneNumber(
      phoneNumber: mobNo,
      verificationCompleted: (val) {
        print("verification completed val = $val");
      },
      verificationFailed: (val) {
        print("verification failed val = $val");
      },
      codeSent: (String verificationId, [int forceResendingToken]) {
        print("code sent to $mobNo");
        Navigator.pushNamed(context, '/get_otp', arguments: {
          'verificationId': verificationId,
          'UserData': _userData,
        });
      },
      codeAutoRetrievalTimeout: (val) {
        print("code auto retrieval timeout val = $val");
      });
} catch (e) {
  print("auth error = $e");
  }
}

我在Firebase项目中添加了SHA-1、SHA-256证书,尝试更改Firebase_auth、fiebase_core的版本。但是,这一切都不管用。我尝试在所有行中添加断点。当到达此行时,应用程序退出。 _auth.verifyPhoneNumber(不再继续。 请帮我解决这个问题!!😭

这是我的调试控制台日志

E/AndroidRuntime(17712): java.lang.NoClassDefFoundError: Failed resolution of: 
Landroidx/browser/customtabs/CustomTabsIntent$Builder;
E/AndroidRuntime(17712):    at                     
com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase- 
auth@@20.0.2:13)
E/AndroidRuntime(17712):    at com.google.android.gms.internal.firebase-auth- 
api.zztw.zzb(com.google.firebase:firebase-auth@@20.0.2:7)
E/AndroidRuntime(17712):    at com.google.android.gms.internal.firebase-auth- 
api.zztw.onPostExecute(Unknown Source:2)
E/AndroidRuntime(17712):    at android.os.AsyncTask.finish(AsyncTask.java:755)
E/AndroidRuntime(17712):    at android.os.AsyncTask.access$900(AsyncTask.java:192)
E/AndroidRuntime(17712):    at 
android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)
E/AndroidRuntime(17712):    at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(17712):    at android.os.Looper.loop(Looper.java:228)
E/AndroidRuntime(17712):    at 
android.app.ActivityThread.main(ActivityThread.java:7826)
E/AndroidRuntime(17712):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17712):    at 
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/AndroidRuntime(17712):    at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:981)
E/AndroidRuntime(17712): Caused by: java.lang.ClassNotFoundException: Didn't find 
class "androidx.browser.customtabs.CustomTabsIntent$Builder" on path: DexPathList[[zip 
file "/data/app/com.creda.location_project- 
1fyv3Q9ek4vLZKMcRkGyDQ==/base.apk"],nativeLibraryDirectories= 
[/data/app/com.creda.location_project-1fyv3Q9ek4vLZKMcRkGyDQ==/lib/arm64, 
/data/app/com.creda.location_project-1fyv3Q9ek4vLZKMcRkGyDQ==/base.apk!/lib/arm64-v8a, 
/system/lib64, /system/product/lib64]]

推荐答案

在新的Firebase身份验证版本I,即20.0.0中,他们进行了重大更改,如用于人工验证的Recaptcha、SafetyNet。要修复崩溃,您可以添加

实施";androidx.browser:browser:1.3.0";

此依赖项仅修复了崩溃,但用户体验仍然不佳,因为FireBase将打开浏览器来验证Recaptcha。

仅当SafetyNet不可用或您的设备未通过可疑检查时,才会触发Firebase报价&Quot;reCAPTCHA流。不过,您应该确保这两种方案都能正常工作。&因此,要启用SafetyNet,请执行以下步骤,或者您也可以访问Firebase Auth以了解更多信息。

  1. 转到Google云控制台,选择您的项目。

  2. 单击导航菜单,选择API&;服务,然后选择仪表板。

  3. 单击启用API和服务并启用API&Q;Android设备验证&Q;。

  4. 在Firebase项目设置中添加SHA 256。(同时调试和发布)

  5. 下载并替换项目中最新的google-services.json文件。

这篇关于在Android中使用Firebase Phone Auth时应用程序崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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