VerifyIdToken metóda neexistuje v Auth typu pomocou getAuth z firebase/auth

0

Otázka

Snažím sa nasledovať príklad uvedený tu , kde sa to ukazuje nasledujúci príklad na overenie ID kupón:

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

Môj kód vyzerá takto:

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

Ale ja si stále

Majetok "verifyIdToken' neexistuje na typ "Auth'

Mám najnovšiu verziu firebase balík, ktorý som predpokladajme príklad dané dokumenty je pomocou zvažuje, že používa getAuth,, takže nemôžem povedať, čo robím zle. Tiež sa snažím, aby nedošlo k zámene firebase-admin a firebase, nie je istý, či je to správne, ale ak by som zmiešané ich ja nedokážem vyhnúť sa inicializovať príliš App prípadoch.

Vďaka za každú pomoc!

1

Najlepšiu odpoveď

1

Ste miešanie Admin SDK a client SDK.

Dokumentácia ste prepojení, je pre Admin SDK len. Všimnite si, ako je to organizované v časti Admin. Nie je pomocou getAuth kdekoľvek na tejto stránke. Admin SDK je inicializovaný úplne inak, ako client SDK, a to nefunguje vôbec v prehliadačoch. To beží na bezpečné backens len.

Client SDK, že používate nemá funkciu pre tokeny overovanie. Že je pre bezpečné prijate len pomocou Adminn SDK.

2021-11-24 02:14:48

Áno, som podozrenia na to. Ďakujem. Takže pre backend API by som mal používať len Admin SDK?
Lux

To je obvykle prípad. Client SDK je naozaj len pre vytváranie a prihlásení užívatelia vo vašom web/mobile aplikácie.
Doug Stevenson

V iných jazykoch

Táto stránka je v iných jazykoch

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