DiscourseのためのDiscordログインの設定

:bookmark: This guide explains how to set up and configure Discord as a login option for your Discourse forum, including how to restrict access to specific Discord guilds.

:person_raising_hand: Required user level: Administrator

Once configured, Discord will appear as a login option alongside other authentication methods on your forum:

Setting up Discord OAuth2

Creating a Discord application

  1. Visit the Discord developer portal
  2. Click “New Application”
  3. Enter a name, upload an icon, and add a description for your application
    • These details will be shown to users during the login process

Configuring OAuth2 settings

  1. Navigate to the “OAuth2” tab in the left sidebar

  1. Copy the “Client ID” and “Client Secret”
    • If the secret isn’t visible, click “Reset Secret” to generate a new one
  2. Add your redirect URL:
    • Format: https://your-discourse-site.com/auth/discord/callback
    • :warning: Do not include a trailing slash
  3. Click “Save Changes”

Enabling Discord login in Discourse

  1. In your Discourse admin settings, enter the Client ID in the discord_client_id setting
  2. Enter the Client Secret in the discord_client_secret setting
  3. Enable the enable_discord_logins setting

Restricting access to specific Discord guilds

You can limit Discord login to members of specific Discord guilds (servers).

Finding your guild ID

  1. Open Discord in your browser
  2. Navigate to any channel in your guild
  3. Look at the URL: https://discordapp.com/channels/{guild_id}/{channel_id}
  4. Copy the first number (guild_id) from the URL
    • Example: In https://discordapp.com/channels/123/456, the guild ID is 123

Configuring guild restrictions

  1. In your Discourse admin settings, locate the discord_trusted_guilds setting
  2. Add your guild ID(s)
    • You can add multiple guild IDs if needed

When guild restriction is enabled:

  • Members of trusted guilds will log in normally
  • Other users will see an error message
  • You can customize this message under Customize → Text, search for discord.not_in_allowed_guild

:warning: If you’re using guild restrictions for security, disable all other login methods in your Discourse settings.

Next steps

Consider setting up the chat-integration plugin to push important Discourse topics to your Discord channels.

Last edited by @jessii 2024-12-11T19:59:00Z

Check documentPerform check on document:
「いいね!」 33

投稿が新しいトピックに分割されました: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 を検証できませんでした。

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