Firebaseでハマったこと
注意
ベータ版の機能を使っている部分があるので機能が変わっていることもある.
CloudFunctionsとHostingを一緒に使うときのURLの管理
通常,CloudFunctionsのFunctionをデプロイした時にアクセスするURLはhttps://us-central1-<your-project-id>.cloudfunctions.net
.
HostingでデプロイしたコンテンツにアクセスするときのURLはhttps://<your-project-id>.firebaseapp.com
となっている.
例えば,hoge
というFunctionを定義した場合はhttps://us-central1-<your-project-id>.cloudfunctions.net/hoge
にアクセスすることで実行できるが,
https://<your-project-id>.firebaseapp.com/hoge
にアクセスして実行できる方が便利である.
そのためにはfirebase.json
を以下のように書けばよい.
// firebase.json { "hosting": { "public": "public", // ホストするディレクトリ "rewrites": [ { "source": "/hoge", // https://<your-project-id>.firebaseapp.com/hoge "function": "hoge" // https://us-central1-<your-project-id>.cloudfunctions.net/hoge } ] } }
詳しいことは Serve Dynamic Content with Cloud Functions | Firebase を参考.
CloudFunctionsでAPIキーを使いたいとき
APIキーなどの外部に漏らしてはいけない情報を扱うときにハードコーディングすることはなるべく避けたい(GitHubなどでソースコードをPublicに管理している場合は絶対にやってはいけない).
CloudFunctionsには環境変数を設定する機能が用意されており,CLIで
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
というようにして設定できる.
この設定はFunction側からはfunctions.config().someservice.key
,functions.config().someservice.id
という形でアクセスできる.
また,現在の環境変数の取得はCLIでfirebase functions:config:get
と実行することでJSON形式で受け取れる.
詳しいことは Environment Configuration | Firebase を参考.