当前位置: 首页 > 知识库问答 >
问题:

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

孟华晖
2023-03-14

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

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

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;
}

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

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

并且onAuthStateChanged在我的StatefulWidgetinitState方法中设置

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

共有3个答案

鲁熙云
2023-03-14

你可以简单地做一个firebase.auth()。发送电子邮件验证链接后注销。当用户再次点击登录时,它会自动触发onAuthStateChanged。

慕容康安
2023-03-14

目前,我提供了一个“完成电子邮件验证”的按钮。这就调用了user . reload——所以根据@Frank van Puffelen的评论,这就足够了。这比得到一个状态更新事件要差得多;我可能会实现一个循环,在发送电子邮件后检查一段时间的状态,以便应用程序自动通过。

姜育
2023-03-14

只有在用户登录或注销的情况下才会触发onAuthStatechanged

根据Doc-

onAuthStatechanged添加观察者以更改用户的登录状态。

在以下情况下将触发观察器:

>

  • 当首次调用 auth().onAuthStateChanged() 时。它将以初始身份验证状态触发。如果用户从 auth().signInWithRedirect() 操作返回,则观察者将等待该操作解析,然后再最初触发。

    当新用户签名时。

    当已经登录的用户注销时。

  •  类似资料:
    • 我正在提示我的应用程序用户提供电子邮件凭据。 在用户插入电子邮件并通过后,我想验证该帐户。 我正在使用javax。邮政有没有办法验证帐户?只确保凭据确实有效——否则我想显示一个无效用户并传递消息。 也许是某种表演方式: 并在不发送任何内容的情况下检查身份验证异常。

    • 我有一张登记表,上面有姓名、电子邮件和密码。注册时,会向用户的电子邮件地址发送一个确认链接。但在发送链接之前,我需要验证电子邮件地址。我使用了: 它显示的任何电子邮件都有效,例如, 我从获得的电子邮件并将其存储在中。 我到底要怎么做才能让它成功?

    • 问题内容: 我检查了用户是否通过电子邮件验证。但是,无论我发送并确认了多少电子邮件,验证状态仍为。检查时我做错什么了吗? 问题答案: 我如何实现此功能的方法是添加一个 带有时间间隔的,它将检查用户是否已通过验证,然后在完成验证后终止计时器。 检查您当前用户状态的功能:

    • 我检查了用户是否通过电子邮件进行验证。但是,无论我发送并确认了多少封电子邮件,验证状态仍然是。我在检查时是否做错了什么?

    • 我正在使用Firebase的方法来验证电子邮件。以下是代码: 这里,< code>else代码应该只在电子邮件未经验证时运行。但是,即使在我验证了电子邮件并重新开始活动之后,< code>if语句仍不为< code>true,电子邮件将再次发送。

    • null 我需要重新验证用户,最好的方法是什么?在用户登录后,如何切换的状态? 谢谢