Estoy creando una aplicación usando la autenticación de base de fuego. Paso el token de firebase a los encabezados de autenticación de la API para validar la API.
El problema es que después de 1 hora, el token caduca y la API ya no funciona. ¿Cómo puedo actualizar el token de autenticación cada vez que caduca para que, en esencia, el token nunca caduque cuando el usuario inicie sesión?
Estoy usando un contexto de autenticación.
aquí está AuthContext.jsx
function getRefreshToken() { auth.onIdTokenChanged(async (user) => { await user?.getIdToken().then(async (token) => token); }); } useEffect(() => { // setInterval(() => { // auth.onIdTokenChanged(async (user) => { // await user?.getIdToken(true).then((token) => { // setCurrentUser({ // ...currentUser, // user: user || null, // isVerified: user ? user.emailVerified : false, // email: user ? user.email : '', // accessToken: user ? token : '', // }); // console.log(token, 'token'); // }); // }); // logout(); // }, 3300000); // every 55 minutes set the access token to the new idToken const unsubscribe = auth.onAuthStateChanged((user) => { setCurrentUser({ ...currentUser, user: user || null, isVerified: user ? user.emailVerified : false, email: user ? user.email : '', accessToken: user ? user.Aa : '', }); setLoading(false); }); return unsubscribe; }, []);Deberá actualizar manualmente el token cuando caduque.
Guarde el tiempo de caducidad del token en algún lugar. Cuando realiza una llamada a la API (suponiendo que está usando axios), puede usar un interceptor de solicitudes para agregar el token. Solo verifique si ha caducado primero; si es así, busque uno nuevo usando el token de actualización y luego haga la llamada a la API. Si no es así, simplemente envíe la solicitud.