为 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 开头的吗?当我使用网页版 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。

正确的设置过程是什么?