【发布时间】:2021-01-26 11:30:47
【问题描述】:
我正在使用 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。
【问题讨论】:
标签: android firebase-authentication