【问题标题】:firebase_auth: throws PlatfromException instead of FirebaseAuthInvalidUserException when user is disabled?firebase_auth:当用户被禁用时抛出 PlatfromException 而不是 FirebaseAuthInvalidUserException?
【发布时间】:2020-05-20 00:56:32
【问题描述】:

FlutterSDK:1.12.13+hotfix.7

这是我的简单代码:

final PhoneVerificationCompleted phoneVerificationCompleted =
        (AuthCredential credential) async{
          print("verified $phoneNumber");


         try{
                await FirebaseAuth.instance.signInWithCredential(credential);

                } on PlatformException catch (exception){
                  print(exception);

                } catch (error){

                }

在我尝试从 Firebase 控制台禁用该帐户之前,它工作正常。 根据firebase docs FirebaseAuth 应该抛出 FirebaseAuthInvalidUserException 无论如何,我仍然无法处理这个抛出的 PlatFormException 。 这就是我在禁用用户尝试登录时得到的结果。

[ +876 ms] E/flutter ( 2479): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception:
PlatformException(ERROR_USER_DISABLED, The user account has been disabled by an administrator., null)
[ +4 ms] E/flutter ( 2479): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
[ +29 ms] E/flutter ( 2479): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
[ +2 ms] E/flutter ( 2479):
[ +17 ms] E/flutter ( 2479): #2 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:349:48)
[ +4 ms] E/flutter ( 2479): #3 MethodChannelFirebaseAuth.signInWithCredential
(package:firebase_auth_platform_interface/src/method_channel_firebase_auth.dart:161:23)
[ +19 ms] E/flutter ( 2479): #4 FirebaseAuth.signInWithCredential (package:firebase_auth/src/firebase_auth.dart:208:10)
[ +2 ms] E/flutter ( 2479): #5 _RegisterUiState.verifyNumber.
(package:highest_price/ui/register_ui.dart:47:45)
[ +1 ms] E/flutter ( 2479): #6 MethodChannelFirebaseAuth._callHandler
(package:firebase_auth_platform_interface/src/method_channel_firebase_auth.dart:377:30)
[ +1 ms] E/flutter ( 2479): #7 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:402:55)
[ ] E/flutter ( 2479): #8 MethodChannel.setMethodCallHandler.
(package:flutter/src/services/platform_channel.dart:370:54)
[ +1 ms] E/flutter ( 2479): #9 _DefaultBinaryMessenger.handlePlatformMessage
(package:flutter/src/services/binding.dart:200:33)
[ +3 ms] E/flutter ( 2479): #10 _invoke3. (dart:ui/hooks.dart:303:15)
[ +1 ms] E/flutter ( 2479): #11 _rootRun (dart:async/zone.dart:1126:13)
[ +19 ms] E/flutter ( 2479): #12 _CustomZone.run (dart:async/zone.dart:1023:19)
[ +1 ms] E/flutter ( 2479): #13 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
[ ] E/flutter ( 2479): #14 _invoke3 (dart:ui/hooks.dart:302:10)
[ ] E/flutter ( 2479): #15 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)
[ ] E/flutter ( 2479):

【问题讨论】:

    标签: firebase flutter dart firebase-authentication


    【解决方案1】:

    尝试使用catchError,它可以让您捕获异步代码错误:

    final PhoneVerificationCompleted phoneCompleted =  (AuthCredential credential) {
                    FirebaseAuth.instance.signInWithCredential(credential).then((data){
                      print(data);
                    }).catchError((error){
                      print(error);
                    });
               };
    

    查看文档:

    https://api.flutter.dev/flutter/package-async_async/DelegatingFuture/catchError.html

    【讨论】:

    • 实际上我的代码编写的逻辑与您所​​做的相同,但仍然抛出 PlatformException 并且无论如何都无法处理:\ 似乎您不明白,它应该抛出 FirebaseAuthInvalidUserException ,但是相反,我们得到了 PlatformException ,由于某种原因它无法处理...
    • 去掉try catch
    • 删除try catch ???由于 FireBaseAuth 引发的异常而进行了尝试,我不明白您的想法。
    • 如果我对未来的变量使用 .catch 错误,我可以打印错误,但是 vscode 调试器仍然给出未捕获的 PlatfromException 消息说'使用已被管理员禁用'这个错误我想捕捉并打印!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多