我在 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) {
}
});
}
最佳答案
尝试使用 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 身份验证对他们进行了注册?因此,请尝试从您的身份验证端而不是数据库访问用户密码。
关于android - 在 firebase.auth().signOut() 之后,当我尝试在不注册的情况下再次登录时,它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027703/