Bei der Verwendung firebase-admin
auf der Serverseite, Ich brauche Benutzerdaten von der Firebase-Authentifizierung. Aber ich habe festgestellt, dass, wenn ich jwt-Token verwenden, die Firebase zur Verfügung gestellt, konnte ich nicht E-Mail oder andere Anbieter Daten von der Decodierung Token. (ziemlich sicher, dass ich bestimmte Bereiche richtig hinzugefügt habe.)firebase-admin auth Fehler beim Aufruf von `getUser`, funktioniert aber beim Aufruf von verifyToken
Dann wandte ich mich an Firebase Admin API, um Benutzerdaten von Firebase-Authentifizierung zu erhalten.
Der Code sieht wie folgt aus:
import * as admin from 'firebase-admin'
const auth = admin.auth()
auth.verifyIdToken(idToken)
.then(decodedToken => decodedToken.user_id)
.then(uid => {
auth.getUser(user_id)
.then((userRecord) => {
console.log("Successfully fetched user data:", userRecord.json();
})
.catch(function(error) {
console.log("Error fetching user data:", error);
});
})
Dann habe ich einen Fehler bekam:
Error fetching user data: Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Error (native)
at Sign.sign (crypto.js:283:26)
at Object.sign (~/app/node_modules/jwa/index.js:55:45)
at Object.jwsSign [as sign] (~/app/node_modules/jws/lib/sign-stream.js:23:24)
at Object.module.exports [as sign] (~/app/node_modules/firebase-admin/node_modules/jsonwebtoken/sign.js:144:16)
at CertCredential.createAuthJwt_ (~/app/node_modules/firebase-admin/lib/auth/credential.js:190:20)
at CertCredential.getAccessToken (~/app/node_modules/firebase-admin/lib/auth/credential.js:162:26)
at SignedApiRequestHandler.sendRequest (~/app/node_modules/firebase-admin/lib/utils/api-request.js:110:32)
at ~/app/node_modules/firebase-admin/lib/auth/auth-api-request.js:381:50
at process._tickDomainCallback (internal/process/next_tick.js:129:7)
Dies könnte ein Berechtigungsfehler sein, nach dieser Vermutung, habe ich festgestellt das sein könnte im Zusammenhang mit diesem Problem auf Stackoverflow:
Firebase admin().auth().getUser(uid) Error: An internal error has occurred 'auth/internal-error'
Aber selbst ich ändere die IAM von Admin-Client in Rolle: Editor, dieser Fehler ist immer noch aufgetreten. Fragen, was los ist, und warum Admin Token überprüfen kann aber gewährt werden, um Benutzerdaten zu lesen (auch ich gebe dem Dienstkonto Root-Zugriff auf mein Projekt).
Jeder Vorschlag wäre hilfreich für mich.
Das von Ihnen bereitgestellte Codebeispiel hat eine Reihe von Syntax- und Codefehlern, die es mir schwer machen, Repro. Zum Beispiel rufen Sie nie initializeApp() auf. Sie verwenden auch undefinierte 'idtoken' und' user_id' Variablen. Schließlich fehlt in Ihrer ersten Zeile "console.log()" eine schließende Klammer. Kannst du bitte eine vollständige Repro erstellen, um uns dabei zu helfen, dies zu debuggen? Im Folgenden finden Sie Antworten auf die Frage, wie Sie Ihr Problem am besten lösen können. Wenn dies nicht funktioniert, führen Sie ein Upgrade auf die neueste Version des SDK (4.0.6) mit einer neuen Fehlerbehandlung durch. Außerdem wäre es gut zu wissen, wo Sie die ungültige Schlüsseldatei erhalten haben. – jwngr