Правильно выйдите из приложения Android из приложения

Я разрабатываю небольшое приложение для Android, и в основном до сих пор у него только функции входа и выхода. Я использую Firebase для хранения пользовательских данных, а также для проверки подлинности.

Таким образом, у меня есть вход в систему, и он аутентифицирует пользователей, как и должен, и я выхожу из работы в том смысле, что он не unauthenticates пользователей. Но есть ли что-нибудь, что мне нужно сделать из приложения, чтобы убить сессию?

 if (id == R.id.action_log_out) { ref.unauth(); //End user session startActivity(new Intent(MainActivity.this, LoginActivity.class)); //Go back to home page finish(); } 

Будет ли это работать, как я думаю, это должно быть? Очевидно, если кто-то выйдет из системы, они не смогут нажать кнопку «Назад» и волшебным образом вернуться на последнюю страницу без повторного входа в систему.

Когда Firebase аутентифицирует пользователя (или вы аутентифицируете пользователя с помощью Firebase), он сохраняет токен для этого пользователя в локальном хранилище на вашем устройстве. Это происходит, когда вы вызываете один из методов authWith... (конечно, только если он успешно аутентифицирует пользователя).

Вызов ref.unauth(); Немедленно удаляет этот токен из локального хранилища.

Правильно реализованный поток не будет автоматически повторно аутентифицировать их, когда пользователь нажимает кнопку «Назад», но это зависит от потока, который вы реализуете (чего нет в вашем вопросе и, скорее всего, слишком много кода).

Из документов Firebase

https://firebase.google.com/docs/auth/android/custom-auth

Вызовите этот FirebaseAuth.getInstance (). SignOut ();

Удалить токены и идентификаторы экземпляров

 String authorizedEntity = PROJECT_ID; String scope = "GCM"; FirebaseInstanceID.getInstance(context).deleteToken(authorizedEntity,scope); 

Вы также можете удалить сам экземпляр экземпляра, включая все связанные токены. При следующем вызове getInstance () вы получите новый идентификатор экземпляра:

 FirebaseInstanceID.getInstance(context).deleteInstanceID(); String newIID = InstanceID.getInstance(context).getId(); 

Я вижу 2 варианта проблемы, которые у нас есть с помощью кнопки «Назад» после выхода из системы:

В вашей учетной записи LoginActivity, которая должна быть вашей активацией, переопределите метод onBackPressed и оставьте его пустым:

  @Override public void onBackPressed() { // empty so nothing happens } 

Или / и вы можете добавить LoginActivityIntent в свой LogoutActivty, если user == null. Таким образом, всякий раз, когда пользователь, не прошедший аутентификацию, приземляется на активность, он мгновенно перенаправляется на LoginActivity, хотя это выглядит странно.

  mAuth = FirebaseAuth.getInstance(); mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); } else { // User is signed out Log.d(TAG,"onAuthStateChanged:signed_out"); startActivity(new Intent(LogoutActivity.this, LoginActivity.class)); } // ... } }; 

Первый вариант проще, но я предполагаю, что если вы примените оба на стороне сохранения ^^ Im кодирования в течение 2 недель, так исправьте меня, если я ошибаюсь.