🐺
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