首页 > 解决方案 > Error occuring on successful firebase authentication login

问题描述

I currently have this code to authenticate a user in firebase authentication:

class Auth implements BaseAuth {
  Future<String> signInWithEmailAndPassword(String email, String password) async {
    try {
      AuthResult user = await FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password);
      print(user.user.uid);
      return user.user.uid;
    } catch(e) {
      print('Error: $e');
      String code;
      switch(e.code) {
        case 'ERROR_INVALID_EMAIL':
          code = 'The email you specifed was not valid.';
          break;
        case 'ERROR_USER_NOT_FOUND':
          code = 'The user could not be found.';
          break;
        case 'ERROR_USER_DISABLED':
          code = 'This user\'s account was disabled.';
          break;
        case 'ERROR_WRONG_PASSWORD':
          code = 'The password you entered for this account is invalid';
          break;
        case 'ERROR_TOO_MANY_REQUESTS':
          code =
          'There have been too many requests sent from this device. Please try again later.';
          break;
        default:
          code = "There was an error with your request.";
          break;
      }
      throw(code);
    }

  }

When entering invalid credentials, the catch works fine and returns the error message to the place that is calling it. However,when I enter valid credentials, it throws this error:

W/BiChannelGoogleApi( 7405): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@8e5055f
E/JavaBinder( 7405): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
E/JavaBinder( 7405): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzam.zzc(Unknown Source:22)
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzam.zzde(Unknown Source:17)
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzam.zzdd(Unknown Source:8)
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzan.zzdf(Unknown Source:1)
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzm.isAnonymous(Unknown Source:47)
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzat.zzi(Unknown Source:57)
E/JavaBinder( 7405):    at com.google.firebase.auth.internal.zzat.zzg(Unknown Source:10)
E/JavaBinder( 7405):    at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source:62)
E/JavaBinder( 7405):    at com.google.firebase.auth.FirebaseAuth$zzb.zza(Unknown Source:5)
E/JavaBinder( 7405):    at com.google.firebase.auth.api.internal.zzcr.zzdx(Unknown Source:15)
E/JavaBinder( 7405):    at com.google.firebase.auth.api.internal.zzen.zzen(Unknown Source:35)
E/JavaBinder( 7405):    at com.google.firebase.auth.api.internal.zzen.zza(Unknown Source:41)
E/JavaBinder( 7405):    at com.google.firebase.auth.api.internal.zzep.zza(Unknown Source:9)
E/JavaBinder( 7405):    at com.google.firebase.auth.api.internal.zzdx.dispatchTransaction(Unknown Source:9)
E/JavaBinder( 7405):    at com.google.android.gms.internal.firebase_auth.zza.onTransact(Unknown Source:13)
E/JavaBinder( 7405):    at android.os.Binder.execTransact(Binder.java:752)
E/JavaBinder( 7405): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.util.ArrayMap" on path: DexPathList[[zip file "/data/app/com.musiplangroup.musiplan-hT4gof_IgKcfYAPoywPYJw==/base.apk"],nativeLibraryDirectories=[/data/app/com.musiplangroup.musiplan-hT4gof_IgKcfYAPoywPYJw==/lib/arm64, /data/app/com.musiplangroup.musiplan-hT4gof_IgKcfYAPoywPYJw==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/JavaBinder( 7405):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:169)
E/JavaBinder( 7405):    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/JavaBinder( 7405):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/JavaBinder( 7405):    ... 16 more
E/AndroidRuntime( 7405): FATAL EXCEPTION: Binder:7405_1
E/AndroidRuntime( 7405): Process: com.musiplangroup.musiplan, PID: 7405
E/AndroidRuntime( 7405): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzam.zzc(Unknown Source:22)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzam.zzde(Unknown Source:17)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzam.zzdd(Unknown Source:8)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzan.zzdf(Unknown Source:1)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzm.isAnonymous(Unknown Source:47)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzat.zzi(Unknown Source:57)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.internal.zzat.zzg(Unknown Source:10)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source:62)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.FirebaseAuth$zzb.zza(Unknown Source:5)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.api.internal.zzcr.zzdx(Unknown Source:15)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.api.internal.zzen.zzen(Unknown Source:35)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.api.internal.zzen.zza(Unknown Source:41)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.api.internal.zzep.zza(Unknown Source:9)
E/AndroidRuntime( 7405):    at com.google.firebase.auth.api.internal.zzdx.dispatchTransaction(Unknown Source:9)
E/AndroidRuntime( 7405):    at com.google.android.gms.internal.firebase_auth.zza.onTransact(Unknown Source:13)
E/AndroidRuntime( 7405):    at android.os.Binder.execTransact(Binder.java:752)
E/AndroidRuntime( 7405): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.util.ArrayMap" on path: DexPathList[[zip file "/data/app/com.musiplangroup.musiplan-hT4gof_IgKcfYAPoywPYJw==/base.apk"],nativeLibraryDirectories=[/data/app/com.musiplangroup.musiplan-hT4gof_IgKcfYAPoywPYJw==/lib/arm64, /data/app/com.musiplangroup.musiplan-hT4gof_IgKcfYAPoywPYJw==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/AndroidRuntime( 7405):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:169)
E/AndroidRuntime( 7405):    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime( 7405):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime( 7405):    ... 16 more
W/OPDiagnose( 7405): getService:OPDiagnoseService NULL
D/OSTracker( 7405): OS Event: crash
D/AbstractTracker( 7405): Event success
I/Process ( 7405): Sending signal. PID: 7405 SIG: 9

As said before, the code above works fine for catching errors like wrong password or wrong email, and returns the code created in the switch statement. However, on a successful login it causes a crash with that error message.

I'm using the firebase_auth package for this.

I would really appreciate some help on this.

标签: androidfirebaseflutterdartfirebase-authentication

解决方案


我认为您的应用程序中缺少 v4 支持库。尝试将 v4 支持库添加为 gradle 依赖项

// https://mvnrepository.com/artifact/com.android.support/support-v4
compile group: 'com.android.support', name: 'support-v4', version: '28.0.0'

推荐阅读