我有我的項目登錄,但總是當我關閉它後打開我的應用程序,必須再次登錄。我用火力地堡進行身份驗證,但我想是這樣的:登錄後如何保持會話打開?
check if user is logged ->
if not - open login,
else - open my main activity"
我不知道我是否有使用SQLite,要麼就是存在如何保持會話活着,即使你關閉應用程序,如果用戶沒有登錄出。
我有我的項目登錄,但總是當我關閉它後打開我的應用程序,必須再次登錄。我用火力地堡進行身份驗證,但我想是這樣的:登錄後如何保持會話打開?
check if user is logged ->
if not - open login,
else - open my main activity"
我不知道我是否有使用SQLite,要麼就是存在如何保持會話活着,即使你關閉應用程序,如果用戶沒有登錄出。
已解決!發現此作品100%
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = fAuth.getCurrentUser();
updateUI(currentUser);
}
private void updateUI(FirebaseUser user) {
if (user != null) {
startActivity(new Intent(Login.this, MainActivity.class));
} else {
//returns to login
}
}
因爲使用火力地堡到autenticate,您可以輕鬆地如果用戶autenticated這樣驗證:
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
Toast.makeText(MainActivity.this, "You are signed in Firebase!", Toast.LENGTH_SHORT).show();
//Redirect to MainActivity
} else {
Toast.makeText(MainActivity.this, "You are signed out from Firebase!", Toast.LENGTH_SHORT).show();
//Redirect to LoginActivity
}
}
};
不需要的SQLite。希望能幫助到你。
最後一步:'auth.addAuthStateListener(authListener);' –
是的,沒錯。謝謝@BobSnyder! –
感謝您的意見@AlexMamo :)是有用的,但不適合我,我發現另一個選項來做到這一點,看看我的答案,如果你想知道我是如何解決問題的。 –
如果當前用戶不爲空,意味着已登錄,否則返回null
boolean isUserLoggedIn = FirebaseAuth.getInstance().getCurrentUser() != null;
您可以設置布爾標誌,當你登入sharedpreferences,所以當你加載你的申請確認標誌,如果這是真的調用一些活動,但如果它是錯誤的調用登錄活動。 只記得在用戶註銷時將flag設置爲false。
已解決! @Override public void onStart(){ super.onStart(); //檢查用戶是否已登錄(非空)並相應地更新UI。 FirebaseUser currentUser = fAuth.getCurrentUser(); updateUI(currentUser); } 私人無效updateUI(FirebaseUser用戶){ 如果(用戶!= NULL){ startActivity(新意圖(Login.this,MainActivity.class)); } else { //返回登錄 } } –