Android Firebase 无法刷新电子邮件验证状态

che*_*sam 6 android firebase firebase-authentication

在我的 Android 应用程序中,我正在创建用户并发送验证电子邮件。当用户通过单击收到的电子邮件中的链接进行验证后,我想进入下一页。但是,验证状态没有更新,所以我无法继续。我试过注销并再次登录,这有效,但我不想以这种方式刷新状态。有任何想法吗?

这是我的代码:

public void onClickContinueBtn() {
   final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
   user.reload().addOnCompleteListener(new OnCompleteListener<Void>() {
       @Override
       public void onComplete(@NonNull Task<Void> task) {
           if(task.isSuccessful()) {
               if(!user.isEmailVerified()){
                   // not verified block
                   // get into here even if verified
               } else {
                   // email verified, go to next page
               }
           } else {
               // do nothing, or show error
           }
       }
   });
}
Run Code Online (Sandbox Code Playgroud)

Fed*_*zzo 1

我有同样的问题。我正在使用 FirebaseUI,即使电子邮件尚未经过验证,它也会自动在 Firebase DB 上创建用户。但是 Firebase 使您可以通过方法检查电子邮件是否已验证。user.isEmailVerified两种可能性:

  1. 如果您想保证仅在验证电子邮件时访问您的应用程序:您可以在用户登录时打开一个对话框并等待验证。要自动取消对话框(仅当验证电子邮件时),您可以向该变量添加观察者,以便您可以授予对应用程序的访问权限。
  2. 如果您在没有验证电子邮件的情况下授予对应用程序的访问权限,则可以使用 boolean isEmailVerified 进行检查。请记住,您必须使用 FirebaseUser 上的方法 reload() 刷新当前用户。请注意,该布尔值的更新不是即时的