Salir correctamente de un usuario de la aplicación Android

Estoy desarrollando una pequeña aplicación Android, y básicamente hasta ahora sólo tiene la funcionalidad de inicio de sesión y cierre de sesión. Estoy utilizando Firebase para almacenar datos de usuario y también para la autenticación.

Así que tengo inicio de sesión de trabajo y autentica a los usuarios como debería y tengo salir de trabajo en el sentido de que no unauthenticates usuarios. Pero hay algo que tengo que hacer desde dentro de la aplicación para matar la sesión?

 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(); } 

¿Funcionará esto como creo que debería hacerlo? Obviamente, si alguien se desconecta, no debería ser capaz de pulsar el botón atrás y volver mágicamente a la última página sin volver a iniciar sesión.

Cuando Firebase autentica al usuario (o autentifica al usuario con Firebase), almacena el token para ese usuario en el almacenamiento local del dispositivo. Esto sucede cuando llama a uno de los métodos authWith... (por supuesto sólo si autentifica correctamente al usuario).

Llamando ref.unauth(); Elimina inmediatamente ese token del almacenamiento local.

Un flujo correctamente implementado no volvería a autenticar automáticamente cuando el usuario presione el botón de retroceso, pero eso depende del flujo que implemente (que falta de su pregunta y probablemente sería demasiado código de todos modos).

De los documentos de Firebase

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

Llame a esto FirebaseAuth.getInstance (). SignOut ();

Eliminar tokens e ID de instancia

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

También puede eliminar el ID de instancia en sí, incluidos todos los testigos asociados. La próxima vez que llame a getInstance () obtendrá un nuevo ID de instancia:

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

Veo 2 opciones para el problema que tenemos con el Back-Button después de Logout:

En su LoginActivity, que debe ser su actividad de lanzamiento, sobrescriba el método onBackPressed y lo deje vacío:

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

O / y puede agregar el LoginActivityIntent en su LogoutActivty si user == null. De esta manera, siempre que un usuario no autenticado aterrice en la actividad, se redireccionará a la LoginActivity instantáneamente, aunque esto parece un poco raro.

  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)); } // ... } }; 

La primera opción es más fácil, pero supongo que si aplica tanto su lado de ahorro ^ ^ Im codificación de 2 semanas ahora, así que me corrija si estoy equivocado.

  • Firebase se bloquea en Android durante el inicio de sesión anónimo
  • Firebase - Correo de verificación de correo electrónico No funciona - Se ha producido un error interno.
  • ¿Cómo enviar correo electrónico de verificación con Firebase?
  • No se puede acceder a zzbql en Firebase
  • Cómo trabajar con FirebaseAuth dentro del módulo Android
  • Cómo integrar la autenticación firebase con los puntos finales del motor de aplicaciones de Google
  • Firebase: Base de datos escribir antes de iniciar sesión
  • Contraseña olvidada en Firebase para Android
  • FirebaseAuthUserCollisionException?
  • Obtener id token en la aplicación de Android y verificarlo en el servidor de back-end (¿Cómo usar id token?)
  • FirebaseUI Auth - Error de inicio de sesión de Facebook: respuesta de debug_token fallida de Facebook
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.