这是我的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
。
答案 0 :(得分:2)
您必须重新考虑您的设计。 createUserWithEmailAndPassword()的文档解释了该方法:
尝试使用给定的电子邮件地址创建新的用户帐户 密码。如果成功,它还会将用户签入应用程序