配置 Discourse 的 Discord 登录

:bookmark: 本指南介绍如何设置和配置 Discord 作为 Discourse 论坛的登录选项,包括如何限制访问特定的 Discord 服务器(guild)。

: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 管理设置中,将客户端 ID 输入到 discord_client_id 设置项中
  2. 将客户端密钥输入到 discord_secret 设置项中
  3. 启用 enable_discord_logins 设置项

限制访问特定的 Discord 服务器

您可以将 Discord 登录限制为特定 Discord 服务器(guild)的成员。

查找您的服务器 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 设置中的所有其他登录选项。

后续步骤

可以考虑设置 chat-integration 插件,以便将重要的 Discourse 主题推送到您的 Discord 频道。

34 个赞

帖子已拆分为新主题:为 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。

正确的设置过程是什么?

您好,

我收到了相同的错误“无效的 OAuth2 重定向 URI

有人成功集成过吗?

我刚测试了一下,OP 中的步骤对我有效。我按照指示添加了我的网站 URL:

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

它被接受了,没有错误。您需要在 Oauth2 > 重定向 (Redirects) 部分添加此内容

5 个赞

非常感谢 pmusaraj

我阅读了该页面的教程而不是 Discourse 文档

下次我不会再犯同样的错误了,抱歉打扰了 :sweat_smile:

3 个赞