EasyBot

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を選んでいるかも確認します。

  1. 対象ApplicationのOAuth2設定を開く
  2. 使うコールバックURLを登録する
  3. Client IDとSecretが同じApplicationのものか確認する

環境変数とリバースプロキシ

アプリのPUBLIC_ORIGINやコールバック設定が旧ドメインのままの場合があります。プロキシ配下では信頼する転送ヘッダーとHTTPS判定も点検します。

  • 本番環境変数の公開URLを確認する
  • Cloudflare経由のHTTPS認識を確認する
  • 古いドメインやポートの設定を削除する

stateとSecretを守る

redirect_uriを直す時にOAuth state検証を無効化してはいけません。Client Secretをフロントへ公開せず、認可コードとstateをサーバー側で検証します。

  • stateを使い捨てにして照合する
  • Client Secretをサーバーだけに置く
  • エラーログから認可コードやCookieを除く