Como usar OAuth2 com GitHub

Para todas as pessoas que estão tendo problemas para fazer o oauth2 funcionar com o GitHub, aqui está uma solução.

Problema: O plugin oauth2 do Discourse gera um erro 500 quando ativado com o GitHub e os campos de configuração não estão definidos corretamente. Como a documentação é escassa sobre o que e como configurar, aqui estão os campos importantes (e alguns opcionais):

OAuth2 client ID ID do Cliente do GitHub
OAuth2 client secret Segredo do Cliente do GitHub
OAuth2 authorize URL https[:]//github[.]com/login/oauth/authorize
OAuth2 token URL https[:]//github[.]com/login/oauth/access_token
OAuth2 token URL method POST
OAuth2 user JSON URL https[:]//api.github[.]com/user
OAuth2 user JSON URL method GET
OAuth2 JSON user ID path id
OAuth2 JSON username path login
OAuth2 JSON name path name
OAuth2 JSON email path mail
OAuth2 JSON avatar path avatar_url
OAuth2 send auth header x
OAuth2 send auth body x
OAuth2 allow association change x

para depuração (apenas):
OAuth2 debug auth x

No lado do GitHub, caso você também esteja perdendo essas informações, aqui está o que é necessário:
Vá para https[:]//github[.]com/settings/developers, clique em “New OAuth App”
Digite o Nome da Aplicação (por exemplo, Discourse),
URL da Página Inicial
e
URL de Retorno de Autorização (https[:]//SEU.DISCOURSESERV[.]ER/auth/oauth2_basic/callback)
e não se esqueça de clicar em Atualizar aplicação.

É isso.
Espero que ajude!

Posso pedir aos desenvolvedores para verificarem o retorno (inválido porque vazio) quando o “OAuth2 user JSON URL” obrigatório não estiver definido? Ele gera este erro e lança um 500.

ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "provider_uid" of relation "user_associated_accounts" violates not-null constraint

Desculpe pela ofuscação nos URLs, fui informado que novos usuários só podem ter 2 links por postagem.