我有一个集中了所有身份验证的静态 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
才会更新。
您有几个选项可以完成此操作:
- ID token 每 55 分钟自动刷新一次,因此您可以等待它刷新。
- 您可以将用户注销,然后让他们重新登录,这也会生成一个具有更新后的
isEmailVerified
值的新 ID token 。 - 您可以调用
getIdToken(true)
在用户上,这会强制它刷新 ID token ,从而获得更新后的isEmailVerified
值。
关于FirebaseUser isEmailVerified 即使在验证电子邮件后也始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63257785/