VerifyIdToken un metodo che non esiste in Auth tipo di utilizzo getAuth da firebase/auth

0

Domanda

Sto cercando di seguire l'esempio qui dove mostra il seguente esempio di verifica di un token ID:

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

Il mio codice simile a questo:

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

Ma continuo a ricevere

Proprietà 'verifyIdToken' non esiste sul tipo di 'Auth'

Ho l'ultima versione di firebase pacchetto, che presumo l'esempio dato dai documenti utilizzando considerando che si usa getAuth, quindi non posso dire cosa sto facendo di sbagliato. Anche io sto cercando di evitare la miscelazione di firebase-admin e firebase, non sono sicuro se questo è corretto, ma se ho mescolato io non riesco a evitare di dover inizializzare troppo App istanze.

Grazie per qualsiasi aiuto!

1

Migliore risposta

1

Si stanno mescolando Admin SDK e il client SDK.

La documentazione a cui si è collegato per l'Admin SDK solo. Notate come è organizzato dalla sezione Admin. Non è usando getAuth in un punto qualsiasi della pagina. Admin SDK è inizializzato in modo completamente diverso rispetto al client SDK, e non con tutti i browser. Esso viene eseguito sul sicuro backens solo.

Il client SDK che si sta utilizzando non dispone di una funzione per la verifica di gettoni. Che è sicura per il backend usando solo la Adminn SDK.

2021-11-24 02:14:48

Sì, ho il sospetto che è. Grazie. Così, per un API di back-end dovrei usare solo l'Admin SDK?
Lux

Che è in genere il caso. Il client SDK è davvero solo per la creazione e l'accesso agli utenti del web/mobile app.
Doug Stevenson

In altre lingue

Questa pagina è in altre lingue

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