FirebaseのServiceAccountKey.jsonファイルの情報を環境変数に保持する方法

この記事は公開から1年以上経過しています。

Next.jsのAPI RoutesなどからFirebase認証を使用する際に、Firebaseサービスアカウント情報をServiceAccountKey.jsonファイルではなく環境変数としてまるごと引き渡す方法。


対応

  1. 以下のコマンドでServiceAccountKey.jsonファイルの情報をBASE64にエンコードする。

    Linuxの場合:

    base64 -w 0 ServiceAccountKey.json > Base64ServiceAccountKey.txt

    Windowsの場合(powershell):

     [Convert]::ToBase64String((Get-Content -Path "ServiceAccountKey.json" -Encoding Byte)) > Base64ServiceAccountKey.txt
  2. .env.local等に手順1でBASE64エンコードした値の環境変数を定義する。

    FB_SERVICE_ACCOUNT_KEY=QTJyZFd0O ...省略...  ThYWNjb3VuCn0K
  3. 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),
        })
      }


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする