Estoy tratando de seguir el ejemplo dado aquí donde muestra el siguiente ejemplo para verificar un token de ID:
// idToken comes from the client app getAuth() .verifyIdToken(idToken) .then((decodedToken) => { const uid = decodedToken.uid; // ... }) .catch((error) => { // Handle error });Mi código se ve así:
function createFirebaseAdminApp(config: AppOptions) { if (getApps().length === 0) { return initializeApp(config); } else { return getApp(); } } const options: AppOptions = { credential: cert({ projectId: process.env.FIREBASE_PROJECT_ID, clientEmail: process.env.FIREBASE_CLIENT_EMAIL, privateKey: process.env.FIREBASE_PRIVATE_KEY != undefined ? process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, "\n") : "", }), databaseURL: process.env.FIREBASE_DATABASE_URL, }; const firebaseAdmin = createFirebaseAdminApp(options) as FirebaseApp; const adminAuth = getAuth(firebaseAdmin); adminAuth .verifyIdToken(token) .then((decodedToken) => { res.locals.decodedToken = decodedToken; next(); }) .catch(() => { next(new HttpError("Invalid token provided", 403)); });pero sigo recibiendo
La propiedad 'verifyIdToken' no existe en el tipo 'Auth'
Tengo la última versión del paquete firebase, que supongo que el ejemplo dado por los documentos está usando considerando que usa getAuth , por lo que no puedo decir qué estoy haciendo mal. También estoy tratando de evitar mezclar firebase-admin y firebase, no estoy seguro de si esto es correcto, pero si los mezclé, parece que no puedo evitar tener que inicializar también las instancias de la aplicación.
¡Gracias por cualquier ayuda!
Está mezclando el SDK de administrador y el SDK de cliente.
La documentación que vinculó es solo para Admin SDK. Observe cómo está organizado en la sección para Admin. No está usando getAuth en ninguna parte de esa página. El SDK de administrador se inicializa de manera completamente diferente al SDK del cliente y no funciona en absoluto en los navegadores. Se ejecuta solo en backens seguros.
El SDK de cliente que está utilizando no tiene una función para verificar tokens. Eso es solo para backends seguros que usan Adminn SDK.