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.
- No se encontró el archivo de clase de com.google.android.gms.internal.zzaja
- Android: ¿Los símbolos de autenticación de usuario Firebase expiran?
- Autenticación de la API de Android Firebase Rest
- Android: Cómo obtener una imagen de perfil más grande desde fb usando firebaseAuth
- Verificación de correo electrónico con Firebase 3.0 en Android
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?
- Firebase Android onAuthStateChanged () dispara dos veces después de signInWithEmailAndPassword ()
- "No se puede obtener el proveedor com.google.firebase.provider.FirebaseInitProvider" Ruta de acceso de error Android
- Empezó a usar el nuevo sitio web de Firebase y estoy recibiendo este error al probar el programa de ejemplo de autenticación de Android
- Firebase Error no puede tener acceso a zzanb después de usar play-services-xxx: 9.8.00
- "No se pudo resolver: com.google.firebase: firebase-core: 9.0.0"
- ¿Cómo puedo deshabilitar las cuentas de usuario de un proyecto de firebase desde el código?
- Firebase Android Auth objeto sin devolución de llamada de disparo
- Salir correctamente de un usuario de la aplicación Android
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,
- https://github.com/firebase/quickstart-android/issues/31
- 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.
- Perdiendo conexión con la base de datos de Firebase después de actualizar a nuevo SDK
- Reproducción de audio desde URI Dentro de ListView, pero Seekbar no se está actualizando en el elemento ListView de Android