Как настроить OAuth2 с GitHub

Для всех, у кого возникают проблемы с настройкой oauth2 для GitHub, вот решение.

Проблема: плагин oauth2 для Discourse выдаёт ошибку 500 при включении с GitHub, если поля в конфигурации указаны неверно. Поскольку документация скудна и не объясняет, что и как настраивать, ниже приведены важные (и некоторые дополнительные) поля:

OAuth2 client ID — Client ID из GitHub
OAuth2 client secret — Client Secret из 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

Для отладки (только):
OAuth2 debug auth — x

На стороне GitHub, если у вас тоже нет этой информации, вот что требуется:
Перейдите по адресу https[:]//github[.]com/settings/developers, нажмите «New OAuth App».
Введите:

  • Название приложения (например, Discourse),
  • URL главной страницы,
  • URL обратного вызова авторизации (https[:]//YOUR.DISCOURSESERV[.]ER/auth/oauth2_basic/callback).
    Не забудьте нажать «Update application».

Всё.
Надеюсь, это поможет!

Могу ли я попросить разработчиков проверить возвращаемое значение (некорректное, так как пустое), когда обязательное поле «OAuth2 user JSON URL» не установлено? Из-за этого возникает ошибка и возвращается код 500.

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

Извините за подмену символов в URL — мне сказали, что новые пользователи могут добавлять не более двух ссылок в одном посте.

Сегодня я тоже столкнулся с этой проблемой. Ошибка исчезла, после того как я установил правильное значение для «OAuth2 callback user ID path».

image