tutorial started kits getting example create swift authentication firebase

swift - started - Controlador de finalización del observador no llamado, cómo verificar el código



tutorial swift (1)

Terminé informando un informe de error a Firebase. Publicaré la respuesta, ya que puede ayudar a alguien en el futuro.

Los chicos de Firebase respondieron esto,

El comportamiento que ha descrito es intencionado por diseño. La sesión de un usuario persiste indefinidamente aunque haya eliminado al usuario de la aplicación. Para ayudarlo con este escenario, puede consultar las siguientes publicaciones de StackOverflow que podrían brindarle más información sobre cómo manejar esta.

  • https://stackoverflow.com/a/38207670
  • https://stackoverflow.com/a/19384430
  • https://stackoverflow.com/a/6203301

Más sobre esto, he insistido con el bloque cancel, por qué no se ejecutó:

No withCancel por qué no se llama al controlador de finalización withCancel . de esto:

ref.child("users//(user.uid)").observe(.value, with: { (snapshot) in print(snapshot) .......... }, withCancel: { error in print(error) })

Cuando coloco puntos de interrupción en ambas impresiones, la aplicación no se detiene. Por lo tanto, incluso con withCancel no se llama.

La respuesta:

withCancel a tu withCancel gestor de finalización de withCancel , déjame darte un poco de información aquí. Los bloques de cancelación se invocan si el cliente no está autenticado y ya no tiene permiso para recibir eventos. Además, también vale la pena mencionar que no se invocan bloques de cancelación durante el modo fuera de línea ya que Firebase está diseñado para funcionar bien en esta condición. Puede consultar nuestro documento para más detalles.

Utilizo Firebase y Swift, para una autenticación personalizada con Instagram.

Tengo este problema ahora, ¿ Quitar un usuario a través del tablero, pero el usuario aún está conectado?

Cuando inicio la aplicación, tengo este oyente:

Auth.auth().addStateDidChangeListener {

en el que estoy estableciendo un observador:

ref.child("users//(user.uid)").observe(.value, with: { (snapshot) in print(snapshot) .......... }, withCancel: { error in print(error) })

with y withCancel handlers no se ejecutan, porque el token del usuario ya no existe. (OMI muy extraño que incluso con withCancel no se ejecuta).

Tengo que atrapar esta situación en código, para forzar el cierre de sesión, como la publicación declarada:

compruebe si puede leer en su área de usuarios, y si no hay nada allí, forzar el cierre de sesión.