🐺
Firebase Admin SDK を emulator に向ける
はじめに
フロント側だけでなく、バックエンドでもFirebaseを利用しており
同じEmulatorをみるようにした話です。
バックエンドで利用するFirebase
公式よりfirebase-adminというSDKが用意されているのでこちらを利用する
※フロントエンドで利用しているfirebaseはサーバー側での実行ができない認識
firebase-adminの設定
firebase-adminを利用するには、firebaseのプロジェクトとFirebase Admin SDK サービス アカウントが必要です。
firebase-adminを使用してfirebase-authを利用する
firebase-adminには管理者権限で Firebase Authentication ユーザーを管理するための API が用意されています。
firebase-adminを使用してfirestoreからデータを取得する
firestoreを利用するにはサービスアカウントが必要になるのでサーバー側で読み込みを行います。
const serviceAccount = require('./path/to/serviceAccountKey.json');
initializeApp({
credential: cert(serviceAccount)
});
const db = getFirestore();
Emulatorの設定
firebase-adminからfirebase cliと同じ接続先を見るようにするには以下の設定が必要です。
環境変数の設定
今回はauthenticationとfirestoreを同一の接続先にする場合を記載していきます。
GCLOUD_PROJECT="your-project-id"
FIRESTORE_EMULATOR_HOST="127.0.0.1:xxxx"
FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:xxxx"
GCLOUD_PROJECT: プロジェクトID
FIRESTORE_EMULATOR_HOST: firestoreを起動しているhost
FIREBASE_AUTH_EMULATOR_HOST: authenticationを起動しているhost
CI上の設定
ローカルで設定した環境変数を指定すれば動きます。
env:
GCLOUD_PROJECT: your-project-id
FIRESTORE_EMULATOR_HOST: "127.0.0.1:xxxx"
FIREBASE_AUTH_EMULATOR_HOST: "127.0.0.1:xxxx"
firebase-adminがサポートしている機能一覧
setupのドキュメント配下に一覧が記載されています。
Discussion