VerifyIdToken metodă nu există în Auth type folosind getAuth de baza/auth

0

Problema

Am încercat să urmeze exemplul dat aici, unde se arată următorul exemplu pentru a verifica un semn de IDENTIFICARE:

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

Codul meu arata astfel:

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

Dar tot primesc

Proprietate 'verifyIdToken' nu exista pe tip 'Auth'

Am ultima versiune de baza pachetului, care presupun că exemplul dat de docs este folosind având în vedere că folosește getAuth, deci nu pot spune ce am gresit. De asemenea, am încercat pentru a evita amestecarea firebase-admin si autobaza, nu sunt sigur dacă acest lucru este corect, dar dacă le-am amestecat eu nu pot par pentru a evita având de a inițializa prea App cazuri.

Multumesc pentru orice ajutor!

1

Cel mai bun răspuns

1

Se amesteca Admin SDK și client SDK.

Documentele de care ai postat este pentru Admin SDK numai. Observați modul în care este organizat în secțiunea de Administrare. Nu este folosind getAuth oriunde în pagină. Admin SDK este inițializat complet diferit față de client SDK, și aceasta nu funcționează deloc în browsere. Se rulează pe secure backens numai.

Client SDK pe care îl utilizați nu are o funcție pentru verificarea jetoane. Care este sigură pentru backend folosind doar Adminn SDK.

2021-11-24 02:14:48

Da, am suspectat-o. Multumesc. Deci, pentru un backend API ar trebui să folosesc doar Admin SDK?
Lux

Care este de obicei cazul. Client SDK este doar pentru crearea și conectarea utilizatorilor în dvs. de web/mobile app.
Doug Stevenson

În alte limbi

Această pagină este în alte limbi

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