我有一个静态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。 有谁知道为什么会这样?
答案 0 :(得分:1)
isEmailVerified
直到下一次为用户生成ID令牌时才更新。
您可以选择几种方法来完成此操作:
isEmailVerified
值的新ID令牌。getIdToken(true)
,这会强制其刷新ID令牌并因此获得更新的isEmailVerified
值。答案 1 :(得分:0)
应用关闭后,firebase会丢失所有存储的信息。
如果要使用自动登录功能,
您使用shared_preferences flutter插件
URL链接:https://pub.dev/packages/shared_preferences
保存电子邮件和密码(必须加密)和
启动应用程序加载数据时
await _auth
.signInWithEmailAndPassword(
email: saveData,
password: pwData,
)
和user.isEmailVerified函数返回true