2017-09-30 11 views
0

Instagram OAuthをFirebaseにNode.jsバックエンド経由で接続しようとしています。私は、access_tokenを含むInstagramアカウントデータを正常に取得しました。これは、firebase-admincreateCustomTokenと私のNode.jsバックエンドで交換したいです。私の目的は、カスタムトークンを生成して、私のAngularアプリケーションがFirebaseアプリケーションにsignInWithCustomToken(token)を実行できるようにすることです。 JSONオブジェクトをコンソールに印刷できるので、Instagramからのデータの取得に問題はありません。Firebase Admin InitializeApp()でINVALID_APP_OPTIONSエラーが発生しました

access_tokenをFirebaseカスタムトークンに交換するときに問題が発生します。

私はNode.jsのためのFirebase管理ページからthis guideを踏襲していると私はここで

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.

以下のエラーメッセージが直面していますが、関連する問題についての私のコードです。

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

私のノードアプリはfirebase-adminへの接続を初期化することができないように見えますが、私はこれらの技術上の初心者ですと私は考えに解決策を持っていません。ご意見をお聞かせください。

答えて

1

Firebase Admin Release Notesのバージョン5.0.0で、2017年5月にちょうど見つからなかったことが、serviceAccountが削除されていると記載されています。したがって、代わりにserviceAccountを使用する代わりに、私はを代わりに使用します。

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

関連する問題