当前位置: 首页 > 知识库问答 >
问题:

Firebase:如何检查电子邮件是否在运行时得到验证

养淇
2023-03-14

所以流程会是这样的:

  1. 用户通过firebase通过电子邮件和密码登录
  2. 如果电子邮件已验证,他们将转到主要活动,否则他们将转到验证电子邮件活动

我想做的是当他们在验证电子邮件活动时,我会在onCreate方法中发送一封验证电子邮件,然后如果电子邮件被验证(在运行时),我会将用户发送到主活动。

我知道检查用户验证电子邮件的功能是否通过

firebaseAuth.getCurrentUser().isEmailVerified()

这里的问题是,我如何使用这个功能(或其他功能)来检查用户是否实时验证他们的电子邮件。

我尝试过使用while循环执行此操作,但它没有按预期工作:

firebaseAuth.getCurrentUser().sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            //verify email sent
            Alert("Verification email send");

            //PROBLEM STARTS HERE
            boolean v = true;
            while(v){
                if(firebaseAuth.getCurrentUser().isEmailVerified()){
                    v = false;
                    break;
                }
            }
            if(!v){
                Alert("Email verified");
                startActivity(new Intent(getApplicationContext(), MainActivity.class));
                finish();
            }
        }
    });

共有1个答案

谭文林
2023-03-14

您可以在函数中添加按键事件。如果用户按下任何键,那么你将通过调用该函数来检查当时的电子邮件id。不需要while循环。如果你发现用户按了任何键,就调用这个函数。

  • 键盘操作文档
  • 按键事件堆栈溢出

示例代码 :

@Override
public Boolean onKeyUp(int keyCode, KeyEvent event) {
    if(firebaseAuth.getCurrentUser().isEmailVerified()){
        startActivity(new Intent(getApplicationContext(), MainActivity.class));
        finish();
    }
    return super.onKeyDown(keyCode, event);
}

尝试这样的方法,而不是while循环。

 类似资料:
  • 问题内容: 我需要帮助检查数据库中是否存在行。就我而言,该行包含一个电子邮件地址。我得到结果: 这是我当前正在使用的代码: 有没有更好的方法来检查MySQL中是否存在行(在我的情况下,检查MySQL中是否存在电子邮件)? 问题答案: 以下是经过尝试,测试和证明的检查行是否存在的方法。 (其中一些我自己使用,或者过去使用过)。 编辑: 我在使用两次的语法中犯了一个先前的错误。请查阅修订版本。 即:

  • 我需要帮助检查数据库中是否存在行。在我的例子中,该行包含一个电子邮件地址。我得到的结果是: 这是我目前使用的代码: 有没有更好的方法来检查MySQL中是否存在行(在我的例子中,检查MySQL中是否存在电子邮件)?

  • 我有一个关于firebase电子邮件验证工作的问题。 案例: 我的用户已登录我的网站(使用设备A)。 他们使用其他浏览器或设备(设备B)创建另一个帐户,但他们使用他已登录的浏览器和设备(设备A)打开电子邮件验证链接。 已经登录的用户(在设备A中)发生了什么?firebase是将它们签出还是只是验证新的电子邮件,但仍然与当前用户签入?

  • 在用户注册Firebase之前,我应该如何验证电子邮件地址?我知道电子邮件地址已通过,但这仅适用于当前用户。因此,必须在发送验证电子邮件之前创建用户。这不会有多大帮助,因为您显然必须在将电子邮件添加到数据库之前验证它。因此,什么是好的解决方法?

  • 每当我在Firebase中使用电子邮件/密码身份验证提供程序时,提供程序都会在成功注册时发送一个无记名令牌,即使是。是否有一种开箱即用的方法将电子邮件/密码身份验证提供程序配置为在用户验证其电子邮件地址之前不发送无记名令牌(并返回403错误)? 请注意,我知道如何创建用户、登录用户、发送验证电子邮件等。。。使用firebase v9。x通过firebase/auth中的方法创建用户(使用Email

  • 问题内容: 我正在尝试检查是否已使用PDO注册了电子邮件,但是到目前为止,我还没有找到一种很好的方法来进行此操作。到目前为止,这就是我所拥有的。如果有帮助,则连接变量为“ $ con”。另外,我是否需要在同一文档中使用连接变量,还是在包含的文档中使用它? 问题答案: 尝试此操作,使用您的连接凭据填写DB_NAME,DB_USER_NAME和DB_USER_PASS,或者如果所有内容都正确地设置为P