Configurar login do Discord para Discourse

:bookmark: Este guia explica como configurar e adaptar o Discord como opção de login para o seu fórum Discourse, incluindo como restringir o acesso a guias (guilds) específicas do Discord.

:person_raising_hand: Nível de utilizador necessário: Administrador

Depois de configurado, o Discord aparecerá como uma opção de login ao lado de outros métodos de autenticação no seu fórum:

Configurando o Discord OAuth2

Criando uma aplicação Discord

  1. Visite o portal de desenvolvedores do Discord
  2. Clique em “New Application” (Nova Aplicação)
  3. Insira um nome, carregue um ícone e adicione uma descrição para a sua aplicação
    • Estes detalhes serão mostrados aos utilizadores durante o processo de login

Configurando as definições do OAuth2

  1. Navegue até o separador “OAuth2” na barra lateral esquerda

  1. Copie o “Client ID” (ID do Cliente) e o “Client Secret” (Segredo do Cliente)
    • Se o segredo não estiver visível, clique em “Reset Secret” (Redefinir Segredo) para gerar um novo
  2. Adicione a sua URL de redirecionamento (redirect URL):
    • Formato: https://seusite-discourse.com/auth/discord/callback
    • :warning: Não inclua uma barra final (trailing slash)
  3. Clique em “Save Changes” (Guardar Alterações)

Habilitando o login do Discord no Discourse

  1. Nas definições de administrador do seu Discourse, insira o Client ID na definição discord_client_id
  2. Insira o Client Secret na definição discord_secret
  3. Ative a definição enable_discord_logins

Restringindo o acesso a guias específicas do Discord

Pode limitar o login do Discord apenas aos membros de guias (servidores) específicas do Discord.

Encontrando o ID da sua guia

  1. Abra o Discord no seu navegador
  2. Navegue para qualquer canal na sua guia
  3. Observe a URL: https://discord.com/channels/{guild_id}/{channel_id}
  4. Copie o primeiro número (guild_id) da URL
    • Exemplo: Em https://discord.com/channels/123/456, o ID da guia é 123

Configurando restrições de guia

  1. Nas definições de administrador do seu Discourse, localize a definição discord_trusted_guilds
  2. Adicione os seus IDs de guia
    • Pode adicionar múltiplos IDs de guia, se necessário

Quando a restrição de guia estiver ativada:

  • Os membros das guias confiáveis farão login normalmente
  • Outros utilizadores verão uma mensagem de erro
  • Pode personalizar esta mensagem em Customize → Text (Personalizar → Texto), pesquisando por discord.not_in_allowed_guild

:warning: Se estiver a usar restrições de guia por segurança, desative todos os outros métodos de login nas definições do seu Discourse.

Próximos passos

Considere configurar o plugin chat-integration para enviar tópicos importantes do Discourse para os seus canais do Discord.

34 curtidas

Uma postagem foi dividida em um novo tópico: Adicionar mais escopos ao login do Discord

Os IDs de canal no Discord agora começam com discord.com? Quando eu uso o Discord na web, sempre foi discord.com/channels/[guild_id]/[channel_id] nos últimos anos.

Parece que este guia está bastante desatualizado. Na interface de administração do Discourse, é possível especificar:

  • Habilitar logins do Discord
  • ID do cliente Discord
  • Segredo do Discord
  • Guildas confiáveis do Discord (opcional)

Enquanto isso, na interface de desenvolvedores do Discord, temos:

  • Nome
  • Descrição (opcional)
  • ID do aplicativo
  • Chave pública
  • URL do endpoint de interações (opcional)
  • URL de verificação de funções vinculadas (opcional)

Assumindo que

  • ID do cliente Discord é o ID do aplicativo, e
  • Segredo do Discord é o mesmo que Chave pública, e
  • deixando os opcionais em branco,

isso resulta em um erro do Discord ao tentar autenticar:

Se eu tentar definir URL do endpoint de interações para
https://forum.example.com/auth/discord/callback, recebo

Erros de validação:
    interactions_endpoint_url: A URL do endpoint de interações especificada não pôde ser verificada.

na interface de desenvolvedor do Discord.

Qual é o procedimento correto para configurar isso?

Olá,

Estou recebendo o mesmo erro “Invalid OAuth2 redirect_uri”

Alguém conseguiu fazer a integração?

Acabei de testar e os passos no OP funcionaram para mim. Adicionei a URL do meu site conforme instruído:

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

E foi aceita sem erros. Você precisa adicionar isso na seção Oauth2 > Redirecionamentos

5 curtidas

super obrigado pmusaraj

Eu tinha lido o tutorial desta página e não a documentação do Discourse
Não cometerei o mesmo erro da próxima vez, desculpe o transtorno :sweat_smile:

3 curtidas