¿Devolución de llamada después de un inicio de sesión exitoso en fireb

¿Devolución de llamada después de un inicio de sesión exitoso en firebase?

Estoy tratando de usar Firebase con una aplicación HTML/CSS/Javascript mayormente pura.

Recibí la siguiente función para manejar el inicio de sesión en firebase (de su documentación ).

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

Claramente hay una función llamada para manejar los errores si ocurren cuando alguien intenta iniciar sesión.

Mi problema es que quiero que ocurra algo de lógica justo después de un inicio de sesión exitoso en firebase (no solo después de un inicio de sesión fallido). ¿Hay alguna manera de hacer esto (como una devolución de llamada)?

Mostrar la mejor respuesta

@Herohtar sí, esto es un duplicado. Sin embargo, me gustaría dejar esto simplemente porque no pude encontrar esa pregunta cuando estaba buscando en Google.

Con los términos exactos que usó en su pregunta, "Devolución de llamada de inicio de sesión de Firebase", la pregunta vinculada es el segundo resultado en Google. (Primero si busca SO específicamente).

Sin embargo, no son los términos exactos que usé. Prueba "devolución de llamada después de iniciar sesión en firebase"

Solo si no mira más allá de un resultado... esos términos todavía dan un primer resultado con un grupo de preguntas SO que incluye esa, y está entre los 4 primeros para una búsqueda específica del sitio.

Los docs dicen que este método devuelve un firebase.Promise.

Las promesas son asíncronas y se manejan mediante devoluciones de llamada then( onSuccess, onFailure ) y catch( onFailure ) para que pueda usar su lógica en cualquiera de ellas.

Desafortunadamente, la documentación no dice qué argumentos se pasarán al método onSuccess, pero siempre puedes probar:

signInWithEmailAndPassword( email, password )
.then( function onSuccess( ...args ) {
  console.log( 'onSuccess', args );
} )
.catch( function onFailure( err ) {
  console.log( 'onFailure', err );
} );

Editar como lo señaló @Herohtar y respondió en https://stackoverflow.com/a/ 39958673/344477 parece que usar signInWithEmailAndPassword no es la forma óptima de rastrear el estado de auth ya que no se invoca después de actualizar la página, etc.

La mejor manera de rastrear si el usuario ha iniciado sesión o no es el método onAuthStateChanged.