¿Cómo usar el método de autenticación getIdToken() en firebase versión 9?
Funciona así a continuación en la versión 8
import firebase from "firebase"; const token = await firebase.auth().currentUser.getIdToken(/* forceRefresh */ false);Intenté esto en la versión 9 pero no funciona.
import { getIdToken } from "firebase/auth"; const token = await getIdToken(/* forceRefresh */ false);También probé esto a continuación y no funciona.
import { getAuth } from "firebase/auth"; const auth = getAuth(); const { currentUser } = auth; const token = await currentUser.getIdToken(/* forceRefresh */ false);La función getIdToken() toma User como parámetro y no el valor booleano de refreshToken como en el SDK de espacio de nombres.
import { getIdToken, onAuthStateChanged } from "firebase/auth"; onAuthStateChanged(auth, async (user) => { if (user) { const token = await getIdToken(user); } }); En cuanto al error, getAuth() devuelve la instancia de autenticación, pero es posible que el estado de autenticación del usuario ya se haya cargado. Intente ejecutar lo mismo en onAuthStateChanged o agregue una verificación nula como lo sugiere @Frank.
Parece que la función getIdToken() toma dos argumentos en la última versión (9.6.6): usuario y booleano. Entonces, este es el código de trabajo en mi caso:
import { getAuth, getIdToken } from "firebase/auth" const auth = getAuth() const { currentUser } = auth const token = await getIdToken(currentUser, true)