使用Firebase身份验证的电子邮件Firebase无法正常运行?

时间:2020-10-12 06:54:02

标签: android firebase-authentication

我正在使用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。

1 个答案:

答案 0 :(得分:0)

此代码有效

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {

    boolean emailVerified = user.isEmailVerified();
if(emailVerified ){
//email verified
}
}