isEmailVerified未正确执行其任务.已验证的电子邮件,仍然返回错误



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

更详细的错误描述:点击链接查看电子邮件后,尚未对其进行验证。我发现在这篇文章中使用isEmailVerified之前必须使用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());
}
}

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

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

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

另请参阅:

  • Firebase Auth emailVerified没有';t已更新

最新更新