Firebase 如何检查用户是否验证邮件,然后让其登录?
我知道这个问题问了很多次,但在花了几个小时试图理解之后,我仍然不知道如何去做 所以我知道我有两种未来的方法 西格因酒店Firebase 如何检查用户是否验证邮件,然后让其登录?,firebase,flutter,authentication,firebase-authentication,flutter-web,Firebase,Flutter,Authentication,Firebase Authentication,Flutter Web,我知道这个问题问了很多次,但在花了几个小时试图理解之后,我仍然不知道如何去做 所以我知道我有两种未来的方法 西格因酒店 Future<String> signIN(String email, String password) async { try { (await FirebaseAuth.instance.signInWithEmailAndPassword( email: email.trim(),
Future<String> signIN(String email, String password) async {
try {
(await FirebaseAuth.instance.signInWithEmailAndPassword(
email: email.trim(),
password: password,
))
.user;
} on FirebaseAuthException catch (e) {
switch (e.code) {
case 'invalid-email':
{
return 'Email is not valid';
}
case 'user-disabled':
{
return 'Account is not active';
}
case 'user-not-found':
{
return 'No user found';
}
case 'wrong-password':
{
return 'wrong password';
}
default:
{
return 'Unexpected error!';
}
}
}
return null;
}
还有“登录”按钮
onPressed: () async {
if (_formKey.currentState.validate()) {
String authError = await _auth.signIN(email, password);
if (authError != null) {
setState(() => error = authError);
print("olaaa");
print(error);
}
setState(() => loading = false);
}
}
从负责自动登录用户的小部件树中删除流(authStateChanges)
然后,手动推送新屏幕进行电子邮件注册。完成后,让用户进入主屏幕
在以后再次打开应用程序时,您可以检查用户是否已登录以及电子邮件是否已验证。如果是,则转到主屏幕,如果不是,则转到登录屏幕
这里的问题是,无论电子邮件是否经过验证,流在用户登录时都会自动更改。所以,移除它并继续 谢谢你的回答。但实际上,我不想让用户进入一个新页面来验证他的邮件。我希望该用户可以访问他的电子邮件帐户,验证我已发送的邮件,然后返回我的应用程序并登录。当然。用同样的方法也很容易做到。只需按下“完成”按钮触发验证,显示一个快餐店,如“请验证您的电子邮件”,您就完成了!!好的,现在我想我明白了,但我如何询问电子邮件是否经过验证?您可以展示代码示例或告诉我如何在我的代码中进行验证吗?当然可以。因此,可以通过在用户类上调用isEmailVerified来实现。这样做的方法是可以看到的。
onPressed: () async {
if (_formKey.currentState.validate()) {
String authError = await _auth.signUp(email, password);
if (authError != null) {
setState(() => jawoll = true);
setState(() => error = authError);
}else{
setState(() => loading = true);
setState(() => jawoll = false);
setState(() => error = "Email send to $email");
}
}
}
onPressed: () async {
if (_formKey.currentState.validate()) {
String authError = await _auth.signIN(email, password);
if (authError != null) {
setState(() => error = authError);
print("olaaa");
print(error);
}
setState(() => loading = false);
}
}