firebase loginで「localhost で接続が拒否されました。」でアクセスできない場合の対処方法
firebase loginで表示されるエラー
firebase でloginする際やtoken文字列を取得する際に以下のコマンドを実行します。
firebase login
や
firebase login:ci
URLが表示され、
Visit this URL on this device to log in:
https://accounts.google.com/o/oauth2/auth?client_id=xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&scope=email%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloudplatformprojects.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffirebase%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&response_type=code&state=xxxxxxx&redirect_uri=http%3A%2F%2Flocalhost%3A9005
クリックすると通常はブラウザでGoogleアカウントを選択後に認証コード(authorization code)が表示されますが、localhostにアクセスできない場合に以下のようにエラーメッセージが表示される場合があります。
エラー原因
原因はエラーメッセージの通りですが、localhostにアクセスできない環境の場合です。
例えば、Dockerで開発環境を構築し、Dockerコンテナ内でfirebase loginコマンドを実行した場合に発生します。
対応方法「–no-localhost」オプションを指定する
firebase loginコマンドに「–no-localhost」オプションを指定して実行しましょう。
firebase login --no-localhost
や
firebase login:ci --no-localhost
この後表示されるURLからGoogleアカウントの認証を行うと、認証コード(authorization code)が表示されるようになります。
その認証コード(authorization code)をコンソール上で入力するとtoken文字列が表示されます。
Paste authorization code here:
xxxxxxxtokenxxxxxxx