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

标签 firebase flutter firebase-authentication

我有一个集中了所有身份验证的静态 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;

在应用程序上注册后,我收到了一封验证邮件,所以我点击了它。 当我下次尝试登录时,isEmailVerified 返回 false。经过一些研究,我认为我应该按如下方式重新加载用户对象:

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

print('${user.isEmailVerified}');

不幸的是,isEmailVerified 仍然返回 false。 有谁知道为什么会这样?

最佳答案

直到下一次为用户生成 ID token 时,isEmailVerified 才会更新。

您有几个选项可以完成此操作:

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

关于FirebaseUser isEmailVerified 即使在验证电子邮件后也始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63257785/

相关文章:

firebase - 新的 Firebase Facebook 登录

ios - 完成 setValue() 会导致 Firebase、Swift 3 崩溃

android - Firebase 数据扁平化

mobile - Flutter 如何使用 ListView 水平和 GridView 垂直滚动屏幕

flutter 医生 : device is offline

javascript - 使用新提供商 (Google) 登录的 Firebase 会删除以前的提供商(密码)

firebase - 在 Flutter 中使用相同的 Firebase 将同一应用程序中的用户和卖家分开

swift - 使用操作表按钮传递值

android - Firebase UI gradle 无法解析 'com.firebaseui.firebase-ui:0.2.0'

flutter - 如何在Flutter中实现多个倒计时进度条?