Discord OAuth2
Discord アカウントを使って FN-Tools にサインインする仕組みです。Web公開・Discord ロール付与など、サインインが必要な機能を使うときに認証を求められます。
サインインの流れ
- ヘッダーのサインインボタンをクリックします。
discord.com/oauth2/authorizeにリダイレクトされます。- FN-Tools が要求する権限を確認して認証をクリックします。
- fn.yuyutti.com に戻り、サインイン完了です。
FN-Tools はパスワードを受け取りません。認証は Discord のサーバー上で完結します。
要求する権限(スコープ)
実装上、Discord OAuth2 では identify guilds guilds.members.read の3つのスコープを要求しています。
| スコープ | 取得できる情報 | 用途 |
|---|---|---|
identify | ユーザーID・ユーザー名・表示名・アバター | アカウントの識別とプロフィール表示に使用 |
guilds | 参加中のサーバー一覧 | ユーザーと FN-Tools BOT の両方が参加しているサーバーだけを画像出力・Discord ロール付与の選択肢表示に使用 |
guilds.members.read | 選択したサーバー内の、サインイン中ユーザー自身のメンバー情報・ロール情報 | 画像出力で表示可能なチャンネルの判定、Discord ロール付与でユーザーがロール管理権限を持つかの確認に使用 |
保存される情報
| 項目 | 内容 |
|---|---|
| Discord ユーザーID | アカウントの固有 ID(数値) |
| ユーザー名 | Discord のユーザー名 |
| 表示名 | Discord の表示名(グローバルネーム) |
| アバター | アバター画像の ID(表示用) |
| アクセストークン | Discord API の呼び出しに使用(参加サーバーの取得など) |
| リフレッシュトークン | アクセストークンの更新に使用 |
| 最終サインイン日時 | 最後にサインインした日時 |
取得しない情報: メールアドレス・電話番号・パスワード・DM・フレンドリスト・メッセージ履歴・サーバーメッセージ
保存されるアクセストークンは、許可されたスコープの範囲内でユーザー自身の情報を取得するためのものです。アカウントの乗っ取り、パスワードの変更、Discord アカウント設定の変更など、アカウント自体に干渉できる権限はありません。
セッション
サインイン成功後、7日間有効なセッションが発行されます。セッションIDはブラウザの Cookie(HttpOnly / SameSite: Lax)に保存され、JavaScript からは読み取れません。
7日間操作がない場合、またはサインアウトするとセッションは無効になります。
同じアカウントで別の端末・ブラウザからサインインすると、それまでのセッションは無効になります。同じブラウザ内の複数タブは同じセッションを共有します。
アクセスの取り消し
Discord の ユーザー設定 → 連携済みアプリケーション から FN-Tools のアクセスをいつでも取り消せます。
取り消した後も FN-Tools 側にセッションが残っている場合があります。確実にサインアウトするには、FN-Tools ダッシュボードの アカウント からもサインアウトしてください。
サインアウト
サインアウトすると、このブラウザに保存されている FN-Tools のセッションが無効になります。Discord の連携済みアプリケーションから FN-Tools が削除されるわけではありません。
アカウント削除
FN-Tools 側に保存されているユーザー情報を削除するには、FN-Tools ダッシュボードの アカウント からアカウント削除を行ってください。アカウント削除だけでは Discord 側の連携済みアプリケーションから FN-Tools は削除されません。アカウント削除後に、Discord のユーザー設定から FN-Tools のアクセスを取り消して連携を解除してください。