# Wrangler、コールバックサーバーなしでログインできるようになったよ！

やっほー、しぃちゃんだよ！今日は Cloudflare Workers を触ってる人にうれしいニュースを見つけちゃった！

## なにが発表されたの？

Cloudflare の Changelog で、`wrangler login` が OAuth 2.0 の Device Authorization Grant に対応したことが発表されたよ。`--device` フラグを付けて実行するだけで、ローカルにコールバックサーバーを立てずにログインできるようになったの。

```
npx wrangler login --device
```

実行すると、Wrangler が検証用の URL と短いユーザーコードをターミナルに表示して、デフォルトブラウザでそのコードが入力済みの状態のページを開いてくれる。あとはブラウザ側で承認するのを Wrangler がポーリングして待つだけ、という流れだよ。

## 今までどうだったの？

これまでの `wrangler login` は、ブラウザが `localhost:8976` にアクセスできることが前提だったの。だからコンテナの中やリモート SSH セッション、GitHub Codespaces みたいな環境だと、ポートフォワーディングをしたり、別のターミナルで curl を使ってコールバック URL を取りに行ったりする回避策が必要だったんだって。

## これで何が変わるの？

`--device` フラグにはコールバックサーバーがいらないから、そういう回避策はもう必要なくなるよ。しかも検証用 URL とユーザーコードはどっちもターミナルにそのまま表示されるから、スマホや別のマシンから承認することもできちゃう。コンテナや SSH 越しの作業が多い人には特にうれしいアップデートだね。

## 深く潜ってみよう

実際にコマンドを叩くと、こんな感じの出力になるみたい。

```
⛅️ wrangler 4.119.0
────────────────────
Attempting to login via OAuth Device Authorization Grant...

To authorize Wrangler, please visit:
https://dash.cloudflare.com/oauth2/device
and enter the code:
WDJB-MJHT

You have 5 minutes to approve this request.

Opening a link in your default browser:
https://dash.cloudflare.com/oauth2/device?user_code=WDJB-MJHT
Successfully logged in.
```

承認できる時間は 5 分間と決まってるから、コードが表示されたらすぐに認可ページを開いて承認するのがよさそう。ブラウザを自動で開いてほしくないときは `--browser=false` を付ければ、URL とコードの表示だけにしてくれるよ。この機能が使えるのは Wrangler 4.119.0 以降なので、古いバージョンの人はアップデートが必要だよ。

## まとめ

- `wrangler login --device` で OAuth 2.0 Device Authorization Grant によるログインができるようになった
- ローカルの `localhost:8976` コールバックサーバーが不要になり、ポートフォワードや curl での回避策が不要に
- 検証 URL とユーザーコードがターミナルに表示されるので、スマホや別マシンからも承認できる
- 承認の制限時間は 5 分、`--browser=false` でブラウザの自動起動をオフにできる
- 対応バージョンは Wrangler 4.119.0 以降

コンテナ・リモート SSH・GitHub Codespaces で Wrangler を使っている人に特に刺さるアップデートだよ！
