firebase - Firebase/Flutter:reload() 不刷新 user.isEmailVerified
问题描述
当用户在应用程序中注册时,我正在发送一个验证链接,但是当我尝试创建一个流来侦听用户单击电子邮件中的验证链接时。
我知道我需要以某种方式刷新用户令牌,但我似乎无法让它工作。我认为reload()
方法是一种,但也许我只是没有正确实施它。
问题是 Stream 总是返回 isEmailVerified == false,唯一的方法是让用户注销并再次登录,这是我想避免的。我该怎么做呢?
我创造了这个未来:
//CHECKS IF EMAIL IS VERIFIED
Future<bool> checkIfEmailIsVerified() async {
FirebaseUser currUser = await _auth.currentUser();
await currUser.reload();
currUser = await _auth.currentUser();
final bool flag = currUser.isEmailVerified;
if (currUser != null) {
return flag;
} else {
return false;
}
}
这个流:
//IS EMAILVERIFIED STREAM
Stream<EmailVerified> get emailVerified async* {
final bool isEmailVerified = await checkIfEmailIsVerified();
yield EmailVerified(isEmailVerified);
}
解决方案
尝试在链式期货上使用单个等待
FirebaseUser currUser = await _auth.currentUser().then((u) => u.reload().then((_) => _auth.currentUser()));
final bool flag = currUser.isEmailVerified;
推荐阅读
- python - 如何通过python控制网站中是否存在字符串
- c# - 使用 Blazor Asp.NetCore 托管模板时获取“NETSDK1045 当前的 .NET SDK 不支持 .NET Core 3.0 作为目标”
- haskell - 非法指令 - haskell
- python - Tkinter OptionMenu 已禁用但可扩展
- css - 如何将自定义 css 添加到 Sitecore Habitat 中自定义创建的特征模型的视图中?
- r - R中数据框的2个相邻行中的字符串比较
- autolayout - UIAlertView 给出约束错误
- c# - 使用 # 重定向到页面中的 div
- c# - 在 asp.net core 中注册一个类型的实例到 ServiceCollection
- postgresql - 调用分配有数值的函数以进行查询