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

isEmailVerified无法正确执行其任务。验证电子邮件,仍然返回假

邢献
2023-03-14

我正在尝试在Firebase的帮助下进行电子邮件验证,这是在您注册之后。然后执行此代码,然后应用一个新场景,其中包含一个按钮,用于检查电子邮件是否得到验证。这是两个代码。提前感谢您的任何答案!!我很乐意接受任何建议!

更详细的错误描述:点击链接检查邮件后,尚未验证。我发现在这篇文章中使用< code>isEmailVerified之前,您必须使用< code > signInWithEmailAndPassword ,但它仍然不起作用。

注册:

public void registerByEmail(AppCompatActivity activity, Context context, String email, String password) {
        System.out.println(email + " " + password);
        AuthSupport.firebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(task -> {
            if(task.isSuccessful()) {
                AuthSupport.firebaseAuth.signInWithEmailAndPassword(email, password);
                FirebaseUser firebaseUser = AuthSupport.firebaseAuth.getCurrentUser();
                Task<Void> voidTask = firebaseUser.sendEmailVerification()
                        .addOnSuccessListener(unused -> {
                            Toast.makeText(context, "Verification Email has been sent.", Toast.LENGTH_SHORT).show();
                            new VerificationEmailSupport().updateUIVerification(activity);
                        })
                        .addOnFailureListener(e -> Log.d("Error", "Cannot send verification email"));
    
                Toast.makeText(context, "Registration successful", Toast.LENGTH_SHORT).show();
    
    
            } else Toast.makeText(context, "Registration failed, try again later...", Toast.LENGTH_SHORT).show();
        });
    }

验证按钮点击动作代码:

public void verifyEmail(View view, AuthSupport authSupport) {
    System.out.println("EXECUTING!");
    System.out.println(AuthSupport.firebaseAuth.getCurrentUser().getEmail() + " im checking for him! ");
    if(!AuthSupport.firebaseAuth.getCurrentUser().isEmailVerified()) {
        Toast.makeText(view.getContext(), "Check the email and retry again...", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(view.getContext(), "Email verified successfully.", Toast.LENGTH_SHORT).show();
        authSupport.updateUI(view.getContext(), AuthSupport.firebaseAuth.getCurrentUser());
    }
}

共有1个答案

杨豪
2023-03-14

验证电子邮件地址发生在应用程序之外(通常在用户的默认浏览器中),不会立即更新应用程序中的用户配置文件。

用户配置文件仅在以下情况下更新:

  • 用户注销并再次登录
  • 每小时一次,当ID令牌即将过期时
  • 当您在用户对象上调用<code>时,重新加载。您可以在UI中放置一个按钮来执行此操作,或者自动调用该按钮,例如在活动的onResume中

另请参见:

  • Firebase Auth emailVerified未更新
 类似资料:
  • 我目前正在开发一个移动应用程序作为我最后一学期的项目。在我的移动应用程序中,我使用Firebase身份验证进行了此电子邮件验证。这是我执行此功能的教程(如果您感兴趣)。 Firebase登录 我这里的问题是,当我在我的移动应用程序中添加了重置密码功能(本教程的下一部分)时,即使电子邮件经过验证,电子邮件验证警报仍然存在。 设置活动(重置密码和电子邮件验证功能所在) 这是错误日志 这是设置中的图片

  • 我有一个静态的AuthProvider类,它集中了所有的身份验证。 我有以下注册码。 在应用程序上注册后,我收到了一封验证电子邮件,所以我点击了它。当我下次尝试登录时,isEmailVertify返回false。经过一些研究,我认为我应该重新加载用户对象,如下所示: 不幸的是,isEmailVerified仍然返回false。有人知道为什么会这样吗?

  • 实际上我在这里做什么,当用户登录他们的帐户时,然后我检查他们是否验证了他们的电子邮件地址,如果没有,那么我将启动。当用户单击发送验证电子邮件按钮时,电子邮件验证码将被发送到用户的电子邮件地址。 之后,当用户成功验证他们的电子邮件地址,当他们再次点击发送验证链接按钮。 而不是显示toast消息<code>toast。makeText(这是“您的电子邮件已验证,现在您可以登录了。”,Toast.LEN

  • 我正在实施firebase电子邮件验证,但是当用户收到电子邮件时,它会重定向到应用程序,这很好。当我尝试使用经过验证的电子邮件 始终返回 false。以下是我的代码:

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

  • 问题内容: 我查询“所有者”一词,文档显示了所有者的电子邮件。我想看看所有有此电子邮件的房屋,以查询电子邮件而不是所有者。 当我执行以下curl请求时,它不返回任何实际情况。 它不会返回正确的信息。我想找到一个确切的结果。我也在考虑使用以下术语: 试图找到完全匹配的内容。这似乎不返回任何文档信息。我认为这可能与句点或 @ 符号有关。 在尝试使用转义引号,转义句号包装电子邮件时,我也尝试过匹配。 我