EASYBOT GUIDE
Discord OAuth2 redirect_uri mismatchの原因と直し方
Discordログインでredirect_uri mismatchが発生する時に、Developer PortalとWebアプリのURLを一致させる方法を解説します。
Discord OAuth2のredirect_uri mismatchは、認証リクエストで送った戻り先URLがDeveloper Portalの登録値と一致しない時に発生します。スキーム、ホスト名、パス、末尾のスラッシュまで照合します。
URLを完全一致させる
httpとhttps、wwwの有無、ポート、パス、大文字小文字などが違うと別のURLとして扱われます。ブラウザのアドレスバーではなく、実際にOAuthへ送信されたredirect_uriを確認します。
- redirect_uriをURLデコードして確認する
- 本番とローカル開発のURLを区別する
- www有無と末尾スラッシュをそろえる
Developer Portalの設定
Discord Developer PortalのOAuth2 Redirectsに正しいコールバックURLを登録します。変更を保存し、正しいApplicationを選んでいるかも確認します。
- 対象ApplicationのOAuth2設定を開く
- 使うコールバックURLを登録する
- Client IDとSecretが同じApplicationのものか確認する
環境変数とリバースプロキシ
アプリのPUBLIC_ORIGINやコールバック設定が旧ドメインのままの場合があります。プロキシ配下では信頼する転送ヘッダーとHTTPS判定も点検します。
- 本番環境変数の公開URLを確認する
- Cloudflare経由のHTTPS認識を確認する
- 古いドメインやポートの設定を削除する
stateとSecretを守る
redirect_uriを直す時にOAuth state検証を無効化してはいけません。Client Secretをフロントへ公開せず、認可コードとstateをサーバー側で検証します。
- stateを使い捨てにして照合する
- Client Secretをサーバーだけに置く
- エラーログから認可コードやCookieを除く