我正试图使一个应用程序与登录功能,我想保持用户登录。我使用Firebase认证和android studio。
这是我尝试过的:
auth.signInWithEmailAndPassword(txt_email, txt_password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
Intent intent = new Intent(login.this, sendForm.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
else {
Toast.makeText(login.this, "cant sing in", Toast.LENGTH_SHORT).show();
}
}
});
首先,当你第二次登录应用程序时,你需要检查用户是否存在。如果用户存在,你直接把他带到MainActivity,否则你会把他带到LoginActivity。
所以,你的launchActivity应该是Login/Main activity之外的东西。通常情况下,这将是一个启动屏幕。假设你的启动活动是SplashActivity。现在,在SplashActivity.java onCreate()中这样做:
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (Objects.nonNull(currentUser)) {
// This means that user has already logged into the app once.
// So you can redirect to MainActivity.java
startActivity(new Intent(this, MainActivity.class));
} else {
// This means no user logged into the app before.
// So you can redirect to LoginActivity.java
startActivity(new Intent(this, LoginActivity.class));
}
如果你不想使用SplashScreen,你可以检查用户是否存在LoginActivity.java使用FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
和重定向他到MainActivity,如果currentUser是非null。
我想保持用户登录。
这是默认发生的。为了保持用户登录,您不需要做任何特别的事情。他们将一直登录,直到明确退出。以下是Android的官方文档:
- https://firebase.google.com/docs/auth/android/start/
如果你想跟踪认证状态,那么请查看我在以下帖子中的回答:
一次性登录应用程序- FirebaseAuth
除此之外,还请注意"签到"的状态。不依赖于互联网连接,而是依赖于当前使用的用户令牌,该令牌存在于本地,并且自上次刷新后一小时内没有过期。