2017-09-30 9 views
0

J'essaie de connecter Instagram OAuth à Firebase via Node.js back-end. J'ai réussi à récupérer des données de compte Instagram, y compris access_token que je veux échanger avec firebase-admincreateCustomToken sur mon backend Node.js. Mon objectif ici est de générer un jeton personnalisé afin que mon application Angular puisse faire signInWithCustomToken(token) dans mon application Firebase. Il n'y a aucun problème à récupérer des données d'Instagram car je peux imprimer mon objet JSON sur la console.Firebase Admin INVALID_APP_OPTIONS erreur à initializeApp()

Le problème est survenu lorsque je souhaite échanger mon access_token vers un jeton personnalisé Firebase.

J'ai suivi this guide de la page Firebase Admin Node.js et je suis face à un message d'erreur ci-dessous

throw new error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_APP_OPTIONS, "Invalid Firebase app options passed as the first argument to initializeApp() for the " +

Error: Invalid Firebase app options passed as the first argument to initializeApp() for the app named "[DEFAULT]". The "credential" property must be an object which implements the Credential interface.

Voici mon code sur question connexe.

// authService.js 
 

 
var fbAdmin = require('firebase-admin'); 
 
var serviceAccount = require('./key/key.json'); 
 

 
function createFirebaseToken(instagramID) { 
 

 
     // I copy & pasted this var from other class 
 
     var config = { 
 
      apiKey: "MY_FIREBASE_APIKEY", 
 
      authDomain: "MY_APP.firebaseapp.com", 
 
      databaseURL: "https://MY_APP.firebaseio.com", 
 
      storageBucket: "MY_APP.appspot.com", 
 
     }; 
 

 
     console.log(fbAdmin.credential.cert(serviceAccount)); // serviceAccount successfully printed on console 
 

 
     // Error appears when executing this function 
 
     fbAdmin.initializeApp({ 
 
      serviceAccount: fbAdmin.credential.cert(serviceAccount), 
 
      databaseURL: config.databaseURL 
 
     }); 
 

 
     const uid = `instagram:${instagramID}`; 
 
     
 
     // Create the custom token. 
 
     console.log(uid); 
 
     return fbAdmin.auth().createCustomToken(uid); 
 
    }

Il semble que mon application nœud ne peut pas initialiser une connexion à firebase-admin mais je ne sais pas la solution que je suis un débutant sur ces technologies. Veuillez nous conseiller

Répondre

1

Juste tombé sur Firebase Admin Release Notes à la version 5.0.0 sur Mai 2017 a déclaré que serviceAccount a été retiré. Donc, au lieu de forcer à utiliser serviceAccount, j'utilise credential à la place.

fbAdmin.initializeApp({ 
 
    credential: fbAdmin.credential.cert({ 
 
     projectId: '<APP_ID>', 
 
     clientEmail: "[email protected]<APP_ID>.iam.gserviceaccount.com", 
 
     privateKey: "-----BEGIN PRIVATE KEY-----\n<MY_PRIVATE_KEY>\n-----END PRIVATE KEY-----\n" 
 
    }), 
 
    databaseURL: config.databaseURL 
 
});