VerifyIdToken método no existe en el tipo de Autenticación utilizando getAuth de firebase/auth

0

Pregunta

Estoy tratando de seguir el ejemplo dado aquí donde se muestra el siguiente ejemplo, para verificar un ID de token:

// idToken comes from the client app
getAuth()
  .verifyIdToken(idToken)
  .then((decodedToken) => {
    const uid = decodedToken.uid;
    // ...
  })
  .catch((error) => {
    // Handle error
  });

Mi código es este:

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

Propiedad 'verifyIdToken' no existe en el tipo 'Auth'

Tengo la última versión de la base avanzada de paquetes, que asumo que el ejemplo dado por los médicos es de uso teniendo en cuenta que los usos getAuth, así que no puedo decir qué estoy haciendo mal. También estoy tratando de evitar la mezcla de firebase-admin y firebase, no se si esto es correcto, pero si me mixto de ellos me parece que no puede evitar tener que inicializar demasiado Aplicación de las instancias.

Gracias por la ayuda!

1

Mejor respuesta

1

Se mezcla hasta que el Administrador de SDK y el SDK de cliente.

La documentación vinculada es para el Administrador de SDK sólo. Observe cómo se organiza en la sección de Administración. No es el uso de getAuth en cualquier lugar de la página. El Administrador de SDK se inicializa de forma completamente diferente de lo que el cliente SDK, y no funciona en todos los navegadores. Se ejecuta sobre seguro backens sólo.

El SDK de cliente que usted está utilizando no tiene una función para comprobar los tokens. Que es seguro para los "backends" sólo mediante la Adminn SDK.

2021-11-24 02:14:48

Sí, yo sospechaba de ella. Gracias. Así que para un servidor de API debo usar sólo el Administrador de SDK?
Lux

Que es normalmente el caso. El SDK de cliente es realmente sólo para la creación y firma de los usuarios en tu web y aplicación móvil.
Doug Stevenson

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................