我试着写我的信使。我需要在FirebaseAuth中注册新用户。为此,我需要在isEmailVerified()
中得到"真"。我的程序发送电子邮件验证给当前用户。这意味着,当前用户不是空的,但在下一行我调用isEmailVerified()
,它返回假,即使电子邮件是验证的。
mAuth.createUserWithEmailAndPassword(edEmail.getText().toString(), edPassword.getText().toString())
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null) {
sendEmailVerify(currentUser);
if (currentUser.isEmailVerified()) {
StartActivity(MainActivity.class);
}
}else{
Toast.makeText(RegActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(RegActivity.this, "email or password error", Toast.LENGTH_SHORT).show();
}
}
});
private void sendEmailVerify(FirebaseUser currentUser) {
currentUser.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
} else {
}
}
});
}
public void StartActivity(Class activity) {
Intent intent = new Intent(RegActivity.this, activity);
startActivity(intent);
RegActivity.this.finish();
}
我的程序必须等到你的电子邮件将被验证的时刻。
1条答案
按热度按时间xdnvmnnf1#
发送验证邮件并不会立即在用户配置文件中将电子邮件地址设置为已验证。毕竟,邮件可能会被退回或发送到用户不拥有的邮箱。只有当用户单击邮件中的链接时,Firebase才会将其电子邮件地址标记为已验证。
由于单击链接和随后的网页加载发生在应用程序之外,因此应用程序代码也不会在发生这种情况时得到通知。相反,应用程序中的配置文件仅在以下情况下才会获得更新的信息:
reload()
。最后一个选项为您提供了最大的灵活性,因为您可以在应用程序代码中确定何时强制执行此刷新。
为了获得最佳体验,您可以考虑多个或所有这些。