web-dev-qa-db-fra.com

Fonctions Cloud Firebase - createCustomToken

Utilisation des nouvelles fonctions cloud de Firebase en combinaison avec le sdk admin.

Je souhaite utiliser la fonction admin.auth (). CreateCustomToken (). L'appel de cette fonction génère un message d'erreur

Error: createCustomToken() requires a certificate with "private_key" set.
    at FirebaseAuthError.Error (native)
    at FirebaseAuthError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:25:28)
    at new FirebaseAuthError (/user_code/node_modules/firebase-admin/lib/utils/error.js:90:23)
    at FirebaseTokenGenerator.createCustomToken (/user_code/node_modules/firebase-admin/lib/auth/token-generator.js:62:19)
    at Auth.createCustomToken (/user_code/node_modules/firebase-admin/lib/auth/auth.js:89:37)
    at /user_code/index.js:29:26
    at process._tickDomainCallback (internal/process/next_tick.js:129:7)

Comment configurer les fonctions cloud pour utiliser une clé privée?

admin.initializeApp(functions.config().firebase);
15
Frank Spin

Malheureusement, la méthode createCustomToken() requiert une clé privée pour créer des jetons personnalisés, qui n'est actuellement pas disponible avec les informations d'identification par défaut (qui se trouve être un Informations d'identification de l'application ). Comme indiqué dans Créez des jetons personnalisés à l'aide des kits de développement logiciel (SDK) d'administration Firebase , vous devez fournir des informations d'identification de certificat pour pouvoir créer des jetons personnalisés.

Vous pouvez générer le certificat requis pour ces informations d'identification en suivant les instructions de Ajouter Firebase à votre application . Une fois que vous avez le fichier JSON clé, vous devez l’intégrer dans Cloud Functions for Firebase.

Vous pouvez le faire en stockant le fichier JSON clé dans votre dossier /functions sous le nom service-account.json. Ensuite, dans le fichier où vous définissez vos fonctions, utilisez admin.credential.cert() pour initialiser le SDK d’administrateur, comme suit:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

var serviceAccount = require("./service-account.json");
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: functions.config().firebase.databaseURL
});

Pour un exemple complet de la procédure à suivre, avec des instructions plus détaillées et un exemple de code, consultez l'exemple de connexion Instagram .

Notez que nous espérons ajouter la prise en charge de createCustomToken() à partir des informations d'identification par défaut à l'avenir, mais pour l'instant, vous devrez apporter vos propres informations d'identification pour que cette méthode fonctionne.

36
jwngr