estoy implementando la autenticación de usuario con la ayuda de firebase en mi proyecto React. Entonces, estoy confundido por algo.
Estoy verificando al usuario desde firebase y luego obtengo un token en el frontend que se envía al backend a través de encabezados y se verifica allí una vez.
Leí los documentos y me enteré de que el token de Firebase caduca después de 1 hora de forma predeterminada, por lo que tenemos que usar "getIdToken" como
firebase.auth().onAuthStateChanged(async user => { if (user) { console.log(user, 'user123 inside firebaseAuth') const token = await user.getIdToken() Cookies.set('my_token', token, { domain: domain }) } })pero, ¿cómo administro esta función?
La cuestión es que no quiero que este token caduque hasta que el usuario cierre la sesión, incluso si está en un componente diferente y está sentado idealmente durante demasiado tiempo.
Puede obtener el token de identificación de Firebase cada vez que realiza una llamada API a su servidor:
async function callAPI() { const user = firebase.auth().currentUser if (user) { const token = await user.getIdToken() const res = await fetch("url", { headers: {authorization: `Bearer ${token}`} }) } else { console.log("No user is logged in") } }Puede obtener el token de ID una vez cuando se monta el componente, pero luego tendrá que lidiar con onIdTokenChanged para mantenerlo actualizado en su estado. Usando el método anterior, siempre obtendrá un token válido.