这个问题已经有答案了:
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不会捕获它。
1条答案
按热度按时间k2fxgqgv1#
在9月15日之后创建的Firebase项目上,默认情况下启用email enumeration protection。虽然这可以保护您的用户免受滥用,但API不再区分
user-not-found
和wrong-password
,而是抛出一个更一般的错误,不太容易受到abuve的影响。您可以更新代码以处理更模糊的错误代码,也可以禁用电子邮件枚举保护以恢复旧的行为。
也可以在这里看到我的答案:iOS应用程序中的Firebase身份验证错误处理,我在Flutter应用程序中没有收到Firebase身份验证的错误代码(我只收到INVALID_LOGIN_CREDENTIALS)