【发布时间】:2020-08-30 21:19:03
【问题描述】:
我的 android 应用程序使用 firebase 身份验证。一旦用户登录并在应用程序中,getCurrentUser() 不为空,这很好。但是,一旦用户关闭应用程序,他们就不会保持登录状态。
这是我的代码:
public class login extends AppCompatActivity {
EditText email, password;
Button signIn, toSignUp;
FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
FirebaseUser firebaseUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
email = findViewById(R.id.insertemail);
password = findViewById(R.id.checkpassword);
signIn = findViewById(R.id.signIn);
toSignUp = findViewById(R.id.toSignUp);
mFirebaseAuth = FirebaseAuth.getInstance();
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser mFireBaseUser = mFirebaseAuth.getCurrentUser();
if (mFirebaseAuth.getCurrentUser() != null) {
Toast.makeText(login.this, "You are logged in!", Toast.LENGTH_SHORT).show();
Intent inte = new Intent(login.this, MapsActivity.class);
startActivity(inte);
} else {
Toast.makeText(login.this, "Please log in", Toast.LENGTH_SHORT).show();
}
}
};
signIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String em = email.getText().toString();
String pass = password.getText().toString();
if (em.isEmpty()) {
email.setError("Please enter your Email ID");
email.requestFocus();
} else if (pass.isEmpty()) {
password.setError("Please enter you Password");
password.requestFocus();
} else if (em.isEmpty() && pass.isEmpty()) {
Toast.makeText(login.this, "Fields are empty!", Toast.LENGTH_SHORT).show();
} else if (!(em.isEmpty() && pass.isEmpty())) {
mFirebaseAuth.signInWithEmailAndPassword(em, pass).addOnCompleteListener(login.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(login.this, "Log in Failed. Please try again!", Toast.LENGTH_SHORT).show();
} else {
Intent inten = new Intent(login.this, MapsActivity.class);
startActivity(inten);
}
}
});
} else {
Toast.makeText(login.this, "Error Occurred!", Toast.LENGTH_SHORT).show();
}
}
});
toSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(login.this, signup.class);
startActivity(intent);
}
});
}
}
为什么每次关闭应用时mFirebaseAuth.getCurrentUser()为null?
提前感谢您的帮助!
【问题讨论】:
标签: java android firebase firebase-authentication