この記事は公開から1年以上経過しています。
Next.jsのAPI RoutesなどからFirebase認証を使用する際に、Firebaseサービスアカウント情報をServiceAccountKey.jsonファイルではなく環境変数としてまるごと引き渡す方法。
対応
-
以下のコマンドで
ServiceAccountKey.json
ファイルの情報をBASE64にエンコードする。Linuxの場合:
base64 -w 0 ServiceAccountKey.json > Base64ServiceAccountKey.txt
Windowsの場合(powershell):
[Convert]::ToBase64String((Get-Content -Path "ServiceAccountKey.json" -Encoding Byte)) > Base64ServiceAccountKey.txt
-
.env.local
等に手順1でBASE64エンコードした値の環境変数を定義する。FB_SERVICE_ACCOUNT_KEY=QTJyZFd0O ...省略... ThYWNjb3VuCn0K
-
API Routes等でFirebaseの初期化を行う際に、手順2で定義した環境変数の値をBASE64デコードして使用する。
import * as firebase from 'firebase-admin' if (!firebase.apps.length) { const encodedServiceAccountKey = Buffer.from( process.env.FB_SERVICE_ACCOUNT_KEY!, 'base64' ).toString('utf8') const serviceAccountKey = JSON.parse(encodedServiceAccountKey) firebase.initializeApp({ credential: firebase.credential.cert(serviceAccountKey), }) }
以上です。