我正在使用Firebase身份验证和电子邮件验证来实现用户注册,如下所示:
private void register(String email, String password) {
FirebaseAuth auth FirebaseAuth.getInstance();
auth.createUserWithEmailAndPassword(email, password)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
// is user registered yet?
if (authResult.getUser() != null) {
// yes, but email is not verified yet. so send verication link
if (!authResult.getUser().isEmailVerified()){
final FirebaseUser user = authResult.getUser();
user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(),
"Verification link has been sent to " + user.getEmail(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Error: cannot send verification link.", Toast.LENGTH_SHORT).show();
}
}
});
}
// yes, and email is already verified
else {
Intent iii = new Intent(getApplicationContext(), MainActivity.class());
startActivity(iii);
}
}
}
})
// registration error....
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
完成用户注册后,我可以在Firebase控制台的“身份验证”菜单上看到该电子邮件。 然后,我单击了电子邮件上的验证链接,并在浏览器上收到了此消息:
您的电子邮件已通过验证您现在可以使用新帐户登录
所以注册成功完成了,我可以登录了,对吧?
但是这些代码在LoginActivity上
:FirebaseUser user = auth.getCurrentUser();
return user.isEmailVerified();
返回假。因此,电子邮件验证过程未成功完成。 怎么了?
我正在使用compileSdkVersion 29和firebase-auth 19.3.2。
答案 0 :(得分:0)
此代码有效
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
boolean emailVerified = user.isEmailVerified();
if(emailVerified ){
//email verified
}
}