在 flutter 中验证电子邮件时,不会调用 onAuthStateChanged

eli*_*003 8 firebase firebase-authentication flutter

当用户在我的应用程序中注册时,他会收到一封验证电子邮件。-listeneronAuthStateChanged在使用创建用户时被调用createUserWithEmailAndPassword,但在电子邮件验证后不会被调用。

我有一个单独的类来处理所有身份验证。以下方法是注册用户

Future<FirebaseUser> signUpUser(email, password) async {
final FirebaseUser user = await _auth.createUserWithEmailAndPassword(email: email, password: password);

assert (user != null);
assert (await user.getIdToken() != null);

return user;
}
Run Code Online (Sandbox Code Playgroud)

在我的StatefulWidget中使用这个方法调用这个方法

void _signUpUser() async {
try {
  await Auth().signUpUser(_email, _password)
    ..sendEmailVerification();
} catch (e) {
  print(e.toString());
}
}
Run Code Online (Sandbox Code Playgroud)

并按照我的方法onAuthStateChanged设置initStateStatefulWidget

  FirebaseAuth.instance.onAuthStateChanged.listen((user) {
  print("Auth State Changed!");
  if (user.isEmailVerified) {
    print("EMail verified!");
  }
  }
Run Code Online (Sandbox Code Playgroud)

anm*_*ail 3

onAuthStatechanged仅在用户登录或注销时触发,而不是在电子邮件验证时触发。

根据文件-

onAuthStatechanged添加观察者以观察用户登录状态的变化。

观察者将在以下场景下被触发:

  • 当 auth().onAuthStateChanged() 第一次被调用时。它将在初始身份验证状态下触发。如果用户从 auth().signInWithRedirect() 操作返回,则观察者将在最初触发之前等待该操作解析。

  • 当新用户登录时。

  • 当已登录的用户退出时。

  • 但是当用户验证了他的电子邮件时如何才能收到通知呢? (4认同)