【问题标题】:Android Firebase cannot refresh email verification statusAndroid Firebase 无法刷新电子邮件验证状态
【发布时间】:2020-05-19 00:00:58
【问题描述】:

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

【问题讨论】:

  • 我遇到了同样的问题,我认为如果不重新验证用户身份,就无法刷新当前 Firebase 版本中的电子邮件验证状态。到目前为止,我发现的最佳解决方案是使用 reauthenticate 方法(例如,在带有电子邮件和密码字段的对话框中)。 firebase.google.com/docs/auth/android/manage-users

标签: android firebase firebase-authentication


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以每隔几秒调用一次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);
    

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2018-11-26
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 2018-03-16
      • 2013-06-07
      • 1970-01-01
      相关资源
      最近更新 更多