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.

  • Cambiar contraseña con Firebase para Android
  • FirebaseAuth.getCurrentUser () devuelve null DisplayName
  • La verificación de correo electrónico de Firebase no funciona correctamente
  • Fallo de autenticación anónima de Firebase a través de datos móviles
  • El método SetProviders está marcado como desaconsejado
  • Autenticación de Firebase en el sitio web de wordpress
  • Cómo trabajar con FirebaseAuth dentro del módulo Android
  • FirebaseUI auth se está estrellando en android
  • Clase de descriptor de módulo local para com.google.firebase.auth no encontrada
  • Firebase - Correo de verificación de correo electrónico No funciona - Se ha producido un error interno.
  • Firebase Manage Multiple auth provider
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.