我无法在firebase.auth()。signOut()之后登录。如果我再次注册,那么它可以工作。但退出用户无法登录。我该怎么办?
注销:
private void logout() {
session.setLoggedin(false);
mAuth.signOut();
Intent intent = new Intent(Main2Activity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
登录:
private void LogIn() {
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("+880" + mobile).exists() && dataSnapshot.child("+880" + mobile).child("password").getValue().equals(userPassword) ) {
Toast.makeText(MainActivity.this, "Password match", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
session.setLoggedin(true);
startActivity(intent);
}else {
Toast.makeText(MainActivity.this, "User or Password doesn't match", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
答案 0 :(得分:1)
尝试使用Firebase身份验证来处理您的登录方法。 addValueEventListener下的onDataChange方法仅在Firebase数据库中的特定数据发生更改时触发。因此,如果数据库中没有任何更改,onDataChange中的代码将永远不会被执行。
以下是如何使用Firebase身份验证登录用户的简单示例:
private void login(String email, String password) {
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
//If login is successful do something here
} else {
//If login is not successful do something here
}
}
});
}
确保在用户注册时向其注册Firebase身份验证,以便您可以使用Firebase身份验证对其进行签名。我可以看到您使用Firebase身份验证方法退出用户,我假设您已使用Firebase身份验证对其进行了注册?因此,尝试访问用户&#39;来自身份验证方的密码,而不是来自数据库的密码。