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

时间:2016-11-29 06:34:43

标签: 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
           }
       }
   });
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

每隔几秒钟即可通过调用reload刷新用户。 示例:

final Handler handler = new Handler();
        final int delay = 5000; //milliseconds

        handler.postDelayed(new Runnable(){
            public void run(){
                Toast.makeText(EmailVerificationActivity.this, "I'm here", Toast.LENGTH_SHORT).show();
                handler.postDelayed(this, delay);
            }
        }, delay);