Настройка входа через Discord для Discourse

:bookmark: Это руководство объясняет, как настроить Discord в качестве варианта входа для вашего форума Discourse, включая ограничение доступа к конкретным серверам (guilds) Discord.>

:person_raising_hand: Требуемый уровень доступа пользователя: Администратор

После настройки Discord появится как вариант входа наряду с другими методами аутентификации на вашем форуме:

Настройка Discord OAuth2

Создание приложения Discord

  1. Перейдите на портал разработчиков Discord
  2. Нажмите «New Application» (Создать приложение)
  3. Введите название, загрузите иконку и добавьте описание для вашего приложения
    • Эти данные будут отображаться пользователям в процессе входа

Настройка параметров OAuth2

  1. Перейдите на вкладку «OAuth2» в левой боковой панели

  1. Скопируйте «Client ID» (Идентификатор клиента) и «Client Secret» (Секрет клиента)
    • Если секрет не отображается, нажмите «Reset Secret» (Сбросить секрет), чтобы сгенерировать новый
  2. Добавьте ваш URL перенаправления:
    • Формат: https://ваш-сайт-discourse.com/auth/discord/callback
    • :warning: Не добавляйте завершающий слэш
  3. Нажмите «Save Changes» (Сохранить изменения)

Включение входа через Discord в Discourse

  1. В настройках администратора Discourse введите Client ID в настройку discord_client_id
  2. Введите Client Secret в настройку discord_secret
  3. Включите настройку enable_discord_logins

Ограничение доступа к конкретным серверам Discord

Вы можете ограничить вход через Discord только для участников конкретных серверов Discord (guilds).

Поиск ID сервера (guild ID)

  1. Откройте Discord в браузере
  2. Перейдите в любой канал вашего сервера
  3. Посмотрите на URL: https://discord.com/channels/{guild_id}/{channel_id}
  4. Скопируйте первое число (guild_id) из URL
    • Пример: В https://discord.com/channels/123/456 ID сервера — 123

Настройка ограничений по серверам

  1. В настройках администратора Discourse найдите настройку discord_trusted_guilds
  2. Добавьте ID ваших серверов
    • При необходимости можно добавить несколько ID серверов

При включенном ограничении по серверам:

  • Участники доверенных серверов будут входить в систему как обычно
  • Другие пользователи увидят сообщение об ошибке
  • Вы можете настроить это сообщение в разделе Настроить → Текст, поискав discord.not_in_allowed_guild

:warning: Если вы используете ограничения по серверам для обеспечения безопасности, отключите все остальные методы входа в настройках Discourse.

Следующие шаги

Рассмотрите возможность установки плагина chat-integration, чтобы отправлять важные темы Discourse в каналы Discord.

34 лайка

Пост был разделён на новую тему: Добавить больше областей доступа для входа в Discord

Разве ID каналов в Discord теперь не начинаются с discord.com? Когда я пользуюсь Discord в браузере, ссылка уже несколько лет имеет вид discord.com/channels/[guild_id]/[channel_id].

Похоже, что это руководство устарело. В административном интерфейсе Discourse можно указать:

  • Включить вход через Discord
  • ID клиента Discord
  • Секретный ключ Discord
  • Доверенные гильдии Discord (необязательно)

Тем временем в интерфейсе разработчиков Discord у нас есть:

  • Название
  • Описание (необязательно)
  • ID приложения
  • Открытый ключ
  • URL-адрес конечной точки взаимодействий (необязательно)
  • URL-адрес проверки связанных ролей (необязательно)

При предположении, что

  • ID клиента Discord — это ID приложения, и
  • Секретный ключ Discord совпадает с Открытым ключом, и
  • необязательные поля оставлены пустыми,

это приводит к ошибке Discord при попытке аутентификации:

Если я попытался установить URL-адрес конечной точки взаимодействий в
https://forum.example.com/auth/discord/callback, то в интерфейсе разработчиков Discord получил:

Ошибки проверки:
    interactions_endpoint_url: Указанный URL-адрес конечной точки взаимодействий не удалось проверить.

Какова правильная процедура настройки этого?

Здравствуйте,

я получаю ту же ошибку «Invalid OAuth2 redirect_uri».

Есть ли кто-то, кому удалось выполнить интеграцию?

Я только что протестировал это, и шаги из первого сообщения помогли мне. Я добавил URL своего сайта, как указано:

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

И он был принят без ошибок. Вам нужно добавить это в разделе Oauth2 > Redirects

5 лайков

Спасибо большое, pmusaraj!

Я прочитал руководство на этой странице, а не документацию Discourse.

В следующий раз я не допущу такой же ошибки. Извините за беспокойство :sweat_smile:

3 лайка