成功的Firebase身份验证登录时发生错误

时间:2019-08-12 08:46:05

标签: android firebase flutter dart firebase-authentication

我目前有以下代码可以在Firebase身份验证中对用户进行身份验证:

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);
    }

  }

输入无效的凭据时,捕获可以正常工作,并将错误消息返回到调用它的位置。但是,当我输入有效的凭据时,它将引发此错误:

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

如前所述,上面的代码可以很好地捕获wrong passwordwrong email之类的错误,并返回在switch语句中创建的代码。但是,成功登录后会导致崩溃并显示错误消息。

我正在使用firebase_auth软件包。

我真的很感谢您的帮助。

5 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

他的意思是,像这样将其添加到应用程序级别Gradle文件的依赖项部分

compile 'com.android.support:support-v4:28.0.0'

答案 2 :(得分:0)

我遇到了同样的问题,请尝试将您的项目迁移到androidx https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility

答案 3 :(得分:0)

它一定程度上与AndroidX不兼容有关。

我在pubspec.yaml中将所有Firebase参考降级为不处理AndroidX的版本

firebase_core: ^0.2.5+1
firebase_auth: ^0.7.0

如果您正在使用其他任何Firebase库,例如cloud_firestore,由于它们依赖于firebase_core模块,您可能也需要对其降级。

更改之后,一切都会恢复。无论如何,这些库大多数都处于0.X版本,因此我认为它们将在将来的版本中解决此类问题。

答案 4 :(得分:0)

正在移除:

implementation 'com.google.firebase:firebase-core:17.2.1'
我的 app / build.gradle 中的

修复了此问题。

请参见https://firebase.google.com/docs/android/setup “您不再需要添加Android库com.google.firebase:firebase-core。

2019年6月,所有适用于Android的Firebase SDK都从Android支持库迁移到Jetpack(AndroidX)库。”