为什么createUserWithEmailAndPassword设置我当前的用户变量(getCurrentUser())?

时间:2016-12-23 22:54:35

标签: android firebase firebase-authentication

这是我的Google身份验证活动:

public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    if(firebaseAuth.getCurrentUser() != null){
        startActivity(new Intent(GoogleAuthentication.this, ChatRoomActvity.class));
    } else {
        googleSignIn();
    }
}

然后我为想要通过电子邮件注册并通过的用户提供注册活动。这是一段代码:

mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if(task.isSuccessful()){
            mProgress.dismiss();
        } else {
            Toast.makeText(RegisterActivity.this, "Task not successfull", Toast.LENGTH_LONG).show();
        }
    }
});

登录屏幕有2个选项  1.谷歌登录  2.注册

问题是,当用户选择#2说注册时,他输入用户/通行证,mAuth.createUserWithEmailAndPassword将此用户/通行证添加到firebase auth db,它还将此用户设置为当前用户。我不知道为什么它将用户设置为当前用户,我只是呼叫mAuth.createUserWithEmailAndPassword而不是signInWithEmailAndPassword

现在玩完选项#2后,当用户回到#1时,他会直接登录聊天室活动,因为 firebaseAuth.getCurrentUser() != null

基本上我希望firebase .createUserWithEmailAndPassword不应该设置我当前的用户变量。 firebaseAuth.getCurrentUser()应为null,直到我致电signInWithEmailAndPassword

1 个答案:

答案 0 :(得分:2)

您必须重新考虑您的设计。 createUserWithEmailAndPassword()的文档解释了该方法:

  

尝试使用给定的电子邮件地址创建新的用户帐户   密码。如果成功,它还会将用户签入应用程序