繁体   English   中英

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

[英]Android Firebase cannot refresh email verification status

在我的 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
           }
       }
   });
}

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

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

您可以通过每隔几秒钟调用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM