Cómo manejar la caducidad de token firebase personalizada en Firebase 3.xx

He utilizado " signInWithCustomToken () " para autenticar usuario firebase.

Este símbolo expira en 1 hora.

Firebase ha recomendado la expiración del token a 1 hora. Si modificamos la expiración mientras se crea un token personalizado usando la biblioteca "php-jwt", firebase lanza la excepción "El formato de token personalizado es incorrecto.

Al buscar soluciones, encontré el siguiente subproceso: " Firebase Android Authentication failed: expired_token (token Auth ha caducado) "

Pero token actualizado devuelto por " onTokenRefresh () " no funciona para mí.

¿Cuál será el procedimiento para actualizar este token personalizado?

O

¿Hay una manera de configurar la caducidad manual con un token personalizado?

Existe una limitación con la generación de tokens personalizados de Firebase. El token de autenticación personalizado de Firebase está limitado a un máximo de 1Hr (3600 seg).

Exp El tiempo, en segundos, en el que expira el token. Puede estar en un máximo 3600 segundos más tarde que iat.

Si el token de autenticación expira cada hora, es difícil para nosotros mantener la sesión válida todo el tiempo 🙁

Cuando utilizamos proveedores de autenticación predeterminados como (Google, Facebook, correo electrónico …); Firebase SDK se encargará de actualizar su token Auth de forma predeterminada. Pero en la autenticación personalizada, Firebase SDK necesita ponerse en contacto con el servidor de terceros para obtener un nuevo token. Aquí sólo SDK no está actualizando el token!

Mi solución consiste en mantener una información de "último token-fetch-time" en local en cada búsqueda de token satisfactoria, para que podamos actualizar el token manualmente después de una hora.

Puede consultar este registro de problemas para obtener más información,

  1. https://github.com/firebase/quickstart-android/issues/31
  2. En la API de Firebase 9.0.0, ¿cómo comprobar que el usuario tiene una sesión Auth válida o no?

Actualizar:

Google actualizó su documento,

Exp (Tiempo de caducidad) : El tiempo, en segundos desde la época UNIX, en la que expira el token. Puede ser un máximo de 3600 segundos más tarde que el iat. (Nota: esto solo controla el tiempo cuando el token personalizado expira, pero una vez que usted firma un usuario usando signInWithCustomToken (), permanecerán conectados en el dispositivo hasta que su sesión se invalide o el usuario se cierre.

Como dice el documento , el token JWT personalizado es válido para un máximo de 1Hr; Por lo que antes de que expire, autenticar a su usuario con Firebase. Después de esa sesión permanecerá activa; ¡No expira!

Puede utilizar el siguiente método para asegurarse de que el usuario tiene una sesión válida,

public static boolean hasValidAuthToken() { return FirebaseAuth.getInstance().getCurrentUser() != null ? true : false; } 

¡Espero que esto te ayude!

Puede obtener un token actualizado utilizando este código.

 FirebaseInstanceId.getInstance().getToken(); 

FirebaseInstanceId es el nombre de mi clase que lo cambia según usted.

  • No se encontró el archivo de clase de com.google.android.gms.internal.zzaja
  • Firebase Android onAuthStateChanged llamado dos veces
  • Inicia sesión con Facebook si la cuenta ya está vinculada con google durante la suscripción inicial en Firebase Android
  • Clase de descriptor de módulo local para com.google.firebase.auth no encontrada
  • La autenticación de Firebase de Android no funciona
  • Firebase Android onAuthStateChanged () dispara dos veces después de signInWithEmailAndPassword ()
  • Android con el cambio de hora de la fecha, pero poner a tiempo de nuevo, Firebase acaba de devolver símbolo expirado
  • Firebase: ¿Puedo usar el nuevo kit de cuentas de Facebook para autenticar usuarios de aplicaciones?
  • FirebaseUI Auth - Error de inicio de sesión de Facebook: respuesta de debug_token fallida de Facebook
  • Firebase sobrescribe Signin con la cuenta de Google
  • Cambiar contraseña con Firebase para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.