📎

devcontainer で clasp がログインできない

2024/03/24に公開

現象

devcontainer の環境で clasp にログインするために次のコマンドを実行します。

npm run clasp -- login --no-localhost

次のような URL が表示されるので、ブラウザで開くと今までは問題なくログインすることができました。

Logging in globally…
🔑 Authorize clasp by visiting this url:
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=xxxxxx

Enter the code from that page here: 

しかし、ブラウザで次のようなエラー画面が表示されてログインできなくなりました。

アクセスをブロック: clasp – The Apps Script CLI のリクエストは無効です

原因

OOB が廃止されたことが原因のようです。

帯域外(OOB)フロー移行ガイド

回避策

--no-localhost オプションを付けづにログインを実行します。

npm run clasp -- login

次のような URL が表示されるので、ブラウザで開きログインを行います。

Logging in globally…
🔑 Authorize clasp by visiting this url:
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=xxxxx

ブラウザでログインが完了すると このサイトにアクセスできません localhost で接続が拒否されました。 と書かれた画面が表示されます。

アドレスバーの http://localhost:34841/?code= から始まる URL をコピーします。

devcontainer で新しいターミナルを開き curl コマンドでコピーした URL に HTTP リクエストを送信します。 URL は " で囲って下さい。

curl "{http://localhost:34841/?code= から始まる URL}"

ログインに成功するとターミナルに次のメッセージが表示されます。

Logged in! You may close this page. 

ターミナルに次のコマンドを入力しログインしていることを確認します。

npm run clasp -- login --status

Discussion