【问题标题】:Couldn't catch new FlutterFire Firebase Auth无法捕获新的 FlutterFire Firebase 身份验证
【发布时间】:2020-12-12 07:12:17
【问题描述】:

我一直在尝试从新的 https://firebase.flutter.dev/ Firebase 身份验证中捕获异常但失败了。 不知道出了什么问题,这是我使用电子邮件和密码功能登录的代码:

    try {
      UserCredential userCredential = await _firebaseAuth
          .signInWithEmailAndPassword(email: email, password: password);
      if (userCredential != null) {
        _user = userCredential.user;
      }
    } on FirebaseAuthException catch (e) {
      print(e.code);
    } on PlatformException catch (e) {
      print(e.message);
    } catch (e) {
      print(e.toString());
    }
    return _user;
  } 

【问题讨论】:

  • 你能发布错误吗?
  • 发生异常。 PlatformException (PlatformException(firebase_auth, com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: 密码无效或用户没有密码。, {code: wrong-password, additionalData: {}, message: 密码无效或用户没有密码。}))

标签: firebase flutter firebase-authentication


【解决方案1】:

您是否在 firebase 控制台身份验证中检查您的用户是否在此处列出。

如果不是这个问题,您可以在控制台添加新用户,然后使用您刚刚添加的电子邮件和密码再次尝试登录。

【讨论】:

  • 我可以毫无问题地登录。我只想在电子邮件未注册或密码错误时捕获异常。我在以前的 firebase 身份验证中捕获异常没有问题。
  • 哦,我明白了,那你可以像这样使用 catchError 方法:await _auth.signInWithEmailAndPassword(email: email, password: password).catchError((error) { print(error); });
  • 它无法捕获异常但打印错误?或者错误没有打印出来?
  • 它不会在调试控制台上打印出异常。它只是抛出异常,导致应用停止。
  • 如果在调试模式下肯定会停止,你在发布模式下尝试过吗?
【解决方案2】:

你可以使用这样的东西,

try {
  UserCredential userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: "barry.allen@example.com",
    password: "SuperSecretPassword!"
  );
} on FirebaseAuthException catch (e) {
  if (e.code == 'user-not-found') {
    print('No user found for that email.');
  } else if (e.code == 'wrong-password') {
    print('Wrong password provided for that user.');
  }
}

更多错误代码:https://firebase.google.com/docs/reference/js/firebase.auth.Auth#error-codes_12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2020-04-14
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多