VerifyIdToken método não existe na Auth tipo usando getAuth da firebase/auth

0

Pergunta

Eu estou tentando seguir o exemplo dado aqui , onde ele mostra o exemplo a seguir para verificar a IDENTIFICAÇÃO do token:

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

Meu código tenha esta aparência:

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));
            });

Mas eu continuo recebendo

A propriedade 'verifyIdToken' não existe no tipo 'Auth'

Eu tenho a versão mais recente do firebase pacote, que eu suponho que o exemplo dado pelo google docs está usando considerando-usa getAuth, então não posso dizer o que eu estou fazendo de errado. Também estou tentando evitar a mistura de firebase-admin e firebase, não sei se isso é correto, mas se eu misturados a eles que eu não consigo evitar de ter que inicializar demais instâncias do Aplicativo.

Obrigado por qualquer ajuda!

1

Melhor resposta

1

Você está misturando-se o Admin SDK e o SDK do cliente.

A documentação vinculada é para o Admin SDK apenas. Repare como ele está organizado na seção de Administração. Ele não está usando getAuth em qualquer lugar na página. O Admin SDK é inicializado de forma completamente diferente do que o SDK do cliente, e ele não funciona em todos os browsers. Ele é executado no seguro backens só.

O SDK do cliente de que você está usando não tem uma função para verificar tokens. Que é para proteger infra-estruturas usando apenas o Adminn SDK.

2021-11-24 02:14:48

Sim, eu suspeito que ele. Obrigado. Assim, para uma API de back-end que eu devo usar apenas o Admin SDK?
Lux

Que normalmente é o caso. O SDK do cliente é realmente só para criação e assinatura de usuários no seu site/app mobile.
Doug Stevenson

Em outros idiomas

Esta página está em outros idiomas

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