FirebaseのAPIキーにリファラー制限を設定したらAuthのGoogleログインがエラーになった

公開日時

FirebaseのAPIキーはクライアントから利用するキーのため、公開しても問題ない(というか公開するしかない)が、自分のサイト以外でAPIキーが利用されるのは防いでおきたい。

APIキー制限はFirebaseコンソール上からは設定できないのでGCPのコンソールから行う必要がある。

APIとサービス => 認証情報 にある Browser key (auto created by Firebase) が該当のAPIキーになっている。

本番環境からのアクセスのみを許可したかったので、リファラー制限に本番環境のURL(xxx.app/*)を設定したところ、Firebase AuthによるGoogleログインができなくなってしまった。

現象としてはログインポップアップが表示されるものの、ログイン画面が表示されずポップアップが閉じてしまう。

consoleには↓が記録されていた。

{
  code: "auth/popup-closed-by-user",
  message: "The popup has been closed by the user before finalizing the operation.",
  a: null
}

Google認証ダイアログを表示した際に firebaseapp.com にアクセスしていたので{project_id}.firebaseapp.com/* を追加してみたところ、アカウント選択画面までは表示されたが同じエラーになってしまった。

最終的に {project_id}.web.app/* も追加したところ、これまで通りログインができるようになった。

firebase api key

これはハマる。

参考


Related #firebase

SharedArrayBuffer updates in Android Chrome 88 and Desktop Chrome 92

クロスオリジン分離対応を実施

Firebase Emulator Suiteで起動しているFunctionsから本番のFirestoreにアクセスする

functionsのみエミュレータを使うようにするとできる

Firebase Functions呼び出し時に Error: function terminated. が発生した場合

firebase functions:logで詳細を確認できる

Cloud BuildでFirebase Hostingのデプロイを行う

リポジトリへのpush以外をトリガーにしたい場合に使用

Firebase FunctionsでonCallで実装しているにも関わらずCORSエラーが発生した場合

Cloud Functions(GCP)の管理画面を確認してみる

JestでFirestoreセキュリティルールのテストを書く

Github ActionsでCIを回せるようになった