Firebase/Flutter : reload() not refreshing user. isEmailVerified

标签 firebase flutter dart firebase-authentication

当用户在应用程序中注册时,我会发送一个验证链接,但是当我尝试创建一个流来监听用户何时单击电子邮件中的验证链接时。

我知道我需要以某种方式刷新用户 token ,但我似乎无法让它工作。我以为 reload() 方法就是其中之一,但也许我只是没有正确实现它。

问题是 Stream 总是返回 isEmailVerified == false,使它变为真的唯一方法是让用户注销并再次登录,这是我想避免的事情。我该怎么做?

我创造了这个 future :

//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);
  }

最佳答案

不幸的是,有必要在重新加载后获取用户的新实例:

User user = FirebaseAuth.instance.currentUser;
if (user != null) {
    await user.reload();
    user = FirebaseAuth.instance.currentUser;
    if (user.emailVerified) {
      ...
    }
}

关于Firebase/Flutter : reload() not refreshing user. isEmailVerified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854615/

相关文章:

javascript - Firebase DataSnapshot.forEach 返回 true 后不会中断

javascript - 尝试删除单个子项时整个 Firebase 数据库被删除

android - Flutter 在 iOS 设备上出现 'Error connecting to the service protocol: HttpException...' 错误

android - 在此 Flutter 示例中格式化文本的最佳方式是什么?

flutter - “The method '其中带firestore flutter的streambuilder时的' was called on null.”

android - Dart Flutter Firebase FirebaseException([cloud_firestore/permission-denied] 调用者无权执行指定操作。)

firebase - 更改新 Firebase 中的 URL(从 2016 年 5 月开始)

firebase - 无法对 flutter 中的对象列表进行排序

flutter - 我如何了解容器 'to be as small as possible'

Flutter - 如何从 BottomNavigationBar 中删除填充?