Configure Discord Login for Discourse

: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_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://discord.com/channels/{guild_id}/{channel_id}
  4. Copy the first number (guild_id) from the URL
    • Example: In https://discord.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:
34개의 좋아요

A post was split to a new topic: Add more scopes to discord login

Aren’t the channel IDs on discord now starting with discord.com ? When I use discord on the web it’s always been discord.com/channels/[guild_id]/[channel_id] for the last couple years or so.

It appears that this guide is quite out of date. In Discourse admin interface one can specify:

  • Enable Discord logins
  • Discord client ID
  • Discord secret
  • Discord trusted guilds (optional)

Meanwhile in the Discord developers interface, we have:

  • Name
  • Description (optional)
  • Application ID
  • Public Key
  • Interactions Endpoint URL (optional)
  • Linked Roles Verification URL (optional)

Assuming that

  • Discord client ID is the Application ID, and
  • Discord secret is the same as Public Key, and
  • leaving optionals blank,

this results in Discord error while trying to authenticate:

If I try setting Interactions Endpoint URL to
https://forum.example.com/auth/discord/callback, I get

Validation errors:
    interactions_endpoint_url: The specified interactions endpoint url could not be verified.

in Discord dev interface.

What is the correct procedure for setting this up?

안녕하세요,

같은 오류 "Invalid OAuth2 redirect_uri"가 발생합니다.

통합에 성공하신 분이 계신가요?

방금 테스트해 봤는데, OP의 단계대로 하면 저에게도 잘 작동했습니다. 지시대로 사이트 URL을 추가했습니다:

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

오류 없이 정상적으로 받아들여졌습니다. Oauth2 > Redirects 섹션에 이 주소를 추가해야 합니다.

5개의 좋아요

정말 감사합니다, pmusaraj.

저는 이 페이지의 튜토리얼을 읽고 discourse 문서는 읽지 않았었습니다.

다음에는 같은 실수를 하지 않겠습니다. 불편을 드려 죄송합니다. :sweat_smile:

3개의 좋아요