DiscourseのDiscordログインを設定する

:bookmark: このガイドでは、特定のDiscordサーバーへのアクセスを制限する方法を含め、DiscourseフォーラムのログインオプションとしてDiscordを設定および構成する方法を説明します。

:person_raising_hand: 必要なユーザーレベル: 管理者

設定が完了すると、Discordはフォーラム上の他の認証方法と並んでログインオプションとして表示されます。

Discord OAuth2の設定

Discordアプリケーションの作成

  1. Discord開発者ポータルにアクセスします
  2. 「New Application」(新しいアプリケーション)をクリックします
  3. アプリケーションの名前を入力し、アイコンをアップロードし、説明を追加します
    • これらの詳細は、ログインプロセス中にユーザーに表示されます

OAuth2設定の構成

  1. 左側のサイドバーにある「OAuth2」タブに移動します

  1. 「Client ID」(クライアントID)と「Client Secret」(クライアントシークレット)をコピーします
    • シークレットが表示されない場合は、「Reset Secret」(シークレットをリセット)をクリックして新しいものを生成します
  2. リダイレクトURLを追加します
    • フォーマット: https://your-discourse-site.com/auth/discord/callback
    • :warning: 末尾のスラッシュは含めないでください
  3. 「Save Changes」(変更を保存)をクリックします

DiscourseでのDiscordログインの有効化

  1. Discourseの管理設定で、discord_client_id設定にクライアントIDを入力します
  2. discord_secret設定にクライアントシークレットを入力します
  3. enable_discord_logins設定を有効にします

特定のDiscordサーバーへのアクセス制限

Discordサーバー(ギルド)のメンバーにのみDiscordログインを制限できます。

サーバーIDの検索

  1. ブラウザでDiscordを開きます
  2. サーバー内の任意のチャンネルに移動します
  3. URLを確認します: https://discord.com/channels/{guild_id}/{channel_id}
  4. URLから最初の数値(guild_id)をコピーします
    • 例: https://discord.com/channels/123/456 の場合、サーバーIDは 123 です

サーバー制限の構成

  1. Discourseの管理設定で、discord_trusted_guilds設定を見つけます
  2. サーバーIDを追加します
    • 必要に応じて複数のサーバーIDを追加できます

サーバー制限が有効な場合:

  • 信頼されたサーバーのメンバーは通常どおりログインできます
  • その他のユーザーにはエラーメッセージが表示されます
  • このメッセージは「Customize → Text」でカスタマイズでき、discord.not_in_allowed_guildを検索してください

:warning: セキュリティのためにサーバー制限を使用している場合は、Discourseの設定ですべての他のログイン方法を無効にしてください。

次のステップ

重要なDiscourseトピックをDiscordチャンネルにプッシュするために、chat-integrationプラグインの設定を検討してください。

「いいね!」 34

投稿が新しいトピックに分割されました:Discordログインにさらにスコープを追加する

DiscordのチャンネルIDは、現在 discord.com から始まっていますか?WebでDiscordを使用しているのですが、ここ数年ずっと discord.com/channels/[guild_id]/[channel_id] となっています。

このガイドはかなり古いようです。Discourse の管理インターフェイスでは、以下を指定できます。

  • Discord ログインを有効にする
  • Discord クライアント ID
  • Discord シークレット
  • Discord 信頼されたギルド (オプション)

一方、Discord 開発者インターフェイスには、以下があります。

  • 名前
  • 説明 (オプション)
  • アプリケーション ID
  • 公開鍵
  • インタラクション エンドポイント URL (オプション)
  • リンクされたロール検証 URL (オプション)

以下を仮定すると、

  • Discord クライアント IDアプリケーション ID であり、
  • Discord シークレット公開鍵 と同じであり、
  • オプションは空白のままにする、

認証を試みると、Discord エラーが発生します。

インタラクション エンドポイント URL を次のように設定しようとすると、
https://forum.example.com/auth/discord/callback、Discord の開発者インターフェイスで次のようなエラーが発生します。

検証エラー:
    interactions_endpoint_url: 指定されたインタラクション エンドポイント URL を検証できませんでした。

これを設定するための正しい手順は何ですか?

こんにちは、

「無効な OAuth2 リダイレクト URI」という同じエラーが表示されます。

統合に成功した方はいらっしゃいますか?

これをテストしたところ、OPの手順でうまくいきました。指示どおりにサイトのURLを追加しました。

https://test.mydomain.com/auth/discord/callback

エラーなく受け付けられました。これをOAuth2 > リダイレクトセクションに追加する必要があります。

「いいね!」 5

super merci pmusaraj

このページのチュートリアルは読みましたが、Discourseのドキュメントは読んでいませんでした。
次回は同じ間違いはしません、お騒がせして申し訳ありません :sweat_smile:

「いいね!」 3