エミュレーターでAPIにアクセスする
基本CloudFunctionやFIrestoreなどエミュレータで動かすとわざわざお金かけずにローカルで検証できるのでおすすめ。
サービスアカウントとか設定しなくてもそこらへんの連携は勝手にしてくれる。
指定するには環境変数で指定するか、initializeする時にファイルを指定する
全然関係ないところから引っ張って来てるけどこのリンク先で説明されてた アプリケーションが Compute Engine、Google Kubernetes Engine、App Engine、または Cloud Functions (Cloud Functions for Firebase を含む) で実行されている場合は、 Application Default Credentials (ADC) を使用します。 ADC は、既存のデフォルト サービス アカウントを使用して認証情報を取得し、リクエストを承認します。ADC は、環境変数GOOGLE_APPLICATION_CREDENTIALSを介して柔軟なローカル テストを有効にします。認証フローを最大限に自動化するには、ADC を Admin SDK サーバー ライブラリと一緒に使用します。
アプリケーションが Google 以外のサーバー環境で実行されている場合は、Firebase プロジェクトからサービス アカウントの JSON ファイルをダウンロードする必要があります。秘密鍵ファイルを含むファイル システムにアクセスできる限り、環境変数GOOGLE_APPLICATION_CREDENTIALSを使用して、これらの手動で取得した資格情報でリクエストを承認できます。このようなファイル アクセスがない場合は、コードでサービス アカウント ファイルを参照する必要があります。これは、資格情報が公開されるリスクがあるため、細心の注意を払って行う必要があります。
つまりCloudFunctionとかでサービスアカウントのキーがいらないのはADCを使ってるからでFirebaseでプロジェクト作ってる場合って自動的にサービスアカウントも作成されててそれが基本的には使われてる。
逆にエミュレーターとかadminSDKやとGoogle以外のサーバー環境やからサービスアカウントのキーとかアカウントととして振る舞えるようにする必要がある。