即使在验证电子邮件后,FirebaseUser isEmailVerified 也始终返回 false

yan*_*grm 4 firebase firebase-authentication flutter

我有一个静态 AuthProvider 类,它集中所有身份验证。

我有以下注册码。

  AuthResult newUser = await auth.createUserWithEmailAndPassword(
      email: email, password: password);
  if (newUser == null) {
    print(
        'AuthProvider: empty user is returned from createUserWithEmailAndPassword');
    return false;
  }
  await newUser.user.sendEmailVerification();
  return true;
Run Code Online (Sandbox Code Playgroud)

注册该应用程序后,我收到了一封验证电子邮件,因此我点击了它。当我下次尝试登录时,isEmailVerified 返回 false。经过一番研究,我认为我应该重新加载用户对象,如下所示:

FirebaseUser user = await auth.currentUser();
await user.reload();
user = await auth.currentUser();

print('${user.isEmailVerified}');
Run Code Online (Sandbox Code Playgroud)

不幸的是,isEmailVerified 仍然返回 false。有谁知道为什么会发生这种情况?

Fra*_*len 5

isEmailVerified直到下次为用户生成 ID 令牌时才会更新。

您有几种选择可以实现此目的:

  1. ID 令牌每 55 分钟自动刷新一次,因此您可以等待它刷新。
  2. 您可以注销用户,然后让他们重新登录,这也会生成一个具有更新isEmailVerified值的新 ID 令牌。
  3. 您可以调用getIdToken(true)用户,这会强制其刷新 ID 令牌,从而获取更新后的isEmailVerified值。