Flutter/Firebase验证与电子邮件和密码不按预期运行[重复]

sz81bmfz  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(148)

这个问题已经有答案了

I Don't get Error codes of Firebase Auth in my Flutter App (I ONLY get INVALID_LOGIN_CREDENTIALS)(1个答案)
4天前关闭。
因此,我尝试使用Flutter制作一个简单的应用程序,在那里我使用Firebase来验证用户的电子邮件和密码,以登录到应用程序。
它的错误之处在于用户可以登录-这表明Firebase正在工作,但当我尝试执行try catch语句时,我告诉用户他们是否输入了错误的电子邮件或密码,它根本没有React。
我导入了import 'package:firebase_auth/firebase_auth.dart';
下面是SignUserIn函数:

class _LoginPageState extends State<LoginPage> {
  // text editing controllers
  final emailController = TextEditingController();
  final passwordController = TextEditingController();

  // sign user in method
  void signUserIn() async {
    // show loading circle
    showDialog(
      context: context,
      builder: (context) {
        return const Center(
          child: CircularProgressIndicator(),
        );
      },
    );

    // try sign in
    try {
      final credential = await FirebaseAuth.instance.signInWithEmailAndPassword(
        email: emailController.text,
        password: passwordController.text,
      );
      // pop the loading circle
      Navigator.pop(context);
    } on FirebaseAuthException catch (e) {
      // pop the loading circle
      Navigator.pop(context);
      // Incorrect e-mail
      if (e.code == 'user-not-found') {
        // show error to user
        wrongEmailMessage();
      }
      // Incorrect password
      else if (e.code == 'wrong-password') {
        // show error to user
        wrongPasswordMessage();
      }
    }
  }

这是错误的EmailMessage()

void wrongEmailMessage() {
    showDialog(
      context: context,
      builder: (context) {
        return const AlertDialog(
          backgroundColor: Colors.deepPurple,
          title: Center(
            child: Text(
              'Incorrect Email',
              style: TextStyle(color: Colors.white),
            ),
          ),
        );
      },
    );
  }

这就是我所说的-按下按钮

SignInBlock(
              onTap: signUserIn,
            ),

我在我的SignInBlock中调用了错误的EmailMessage(),它确实工作了,所以我唯一的理论是与Firebase有关的东西不正确。
是不是有一些共同的问题,我错过了现场?如果需要更多的信息,我会提供的。
我试过只打印到控制台,而不是调用函数仍然不起作用。我试过使用不同的e.codes ==“”都没有用。当我点击SignInBlock按钮时,当我正确写入信息时,它会工作,但当我不正确写入信息时,try do不会捕获它。

k2fxgqgv

k2fxgqgv1#

在9月15日之后创建的Firebase项目上,默认情况下启用email enumeration protection。虽然这可以保护您的用户免受滥用,但API不再区分user-not-foundwrong-password,而是抛出一个更一般的错误,不太容易受到abuve的影响。
您可以更新代码以处理更模糊的错误代码,也可以禁用电子邮件枚举保护以恢复旧的行为。
也可以在这里看到我的答案:iOS应用程序中的Firebase身份验证错误处理,我在Flutter应用程序中没有收到Firebase身份验证的错误代码(我只收到INVALID_LOGIN_CREDENTIALS)

相关问题