Node.jsで1つのプロジェクトで複数のFirebaseプロジェクトを使用する方法

プログラミング

前提

  • バージョン firebase-admin: ^9.2.0

方法

初期化

  • 初期化時に名前をつける。名前をつけない場合、デフォルトになる。
import * as admin from 'firebase-admin';

admin.initializeApp({
  credential: admin.credential.cert({
    clientEmail: FIREBASE_CLIENT_EMAIL,
    privateKey: FIREBASE_PRIVATE_KEY,
    projectId: FIREABASE_PROJECT_ID,
  }),
  databaseURL: FIREABASE_DATABASE_URL
});

admin.initializeApp({
  credential: admin.credential.cert({
    clientEmail: SECONDARY_FIREBASE_CLIENT_EMAIL,
    privateKey: SECONDARY_FIREBASE_PRIVATE_KEY,
    projectId: SECONDARY_FIREABASE_PROJECT_ID,
  }),
  databaseURL: FIREABASE_DATABASE_URL
}, 'secondary'); ## 名前をつける

jsonからキーを取得している場合

const serviceAccount = require('./path/to/serviceAccountKey.json');
const secondaryServiceAccount = require('./path/to/secondaryServiceAccountKey.json');
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: FIREABASE_DATABASE_URL
});
admin.initializeApp({
  credential: admin.credential.cert(secondaryServiceAccount),
  databaseURL: FIREABASE_DATABASE_URL
}, 'secondary'); ## 名前をつける

呼び出し

  • 名前を付けて、呼び出す
import * as admin from 'firebase-admin';

// 名前を付けずに呼び出すと、デフォルトになる。
console.log(admin.app().name);
[DEFAULT]

// initializeAppで付けた名前で呼び出す
const secondaryAdmin = admin.app('secondary')
console.log(secondaryAdmin.name)
'secondary'

// ex)認証の場合
const { uid } = await clientAdmin.auth().verifyIdToken(idToken)