HerokuでGoogle認証情報・環境変数を扱う
前置き
通常ローカル開発環境では.envファイルにkey:valueペアの定数を定義したり、Google APIの認証情報をJSONファイルに保持していたりするが、HerokuなどのPaaSでGithubリポジトリ連携する場合、資格情報を公開しない状態でアプリ側で扱えるようにする必要がある。
$ heroku config:set GOOGLE_CREDENTIALS="$(< /home/charles/Programs/heroku/google-credentials.json)" --app "myapp"
Herokuでの確認
環境変数について
Node.jsのdotenvパッケージを使用して.envファイルに保存された環境変数を読み込んでいる場合も、Heroku環境変数から読み出すようにソースの記述を変更する。
Firebase.js
import firebase from 'firebase'
// We read Config Vars from Heroku, so no need to load .env
// const dotenv = require('dotenv')
// dotenv.config()
const {
API_KEY,
AUTH_DOMAIN,
PROJECT_ID,
STORAGE_BUCKET,
MESSAGING_SENDER_ID,
APP_ID
} = process.env
const fb_config = {
apiKey: API_KEY,
authDomain: AUTH_DOMAIN,
projectId: PROJECT_ID,
storageBucket: STORAGE_BUCKET,
messagingSenderId: MESSAGING_SENDER_ID,
appId: APP_ID
}
const firebaseApp = firebase.initializeApp(fb_config)
//firebase.firestore().settings({ experimentalForceLongPolling: true, merge: true })
const db = firebaseApp.firestore()
export default db;