Приложение GitHub - аутентификация/авторизация пользователей через API GitHub

Я новичок в GitHub Apps. Я уже использовал GitHub OAuth, но мне трудновато понять аутентификацию и авторизацию пользователей для GitHub Apps. Мой случай использования выглядит следующим образом -

Пользователь посетит мой сайт, войдет в систему со своими учетными данными GitHub и в это время пользователь должен принять разрешение, которое я запрашиваю в его профиле (например, репозиторий, PR и т.д.) и отобразить эти репозитории и PR на моем сайте и выполнить некоторые действия с ними.

У меня в основном 1 вопрос на высоком уровне.

Конечные точки API и все ключи, необходимые для аутентификации и авторизации пользователя, чтобы чтобы получить все запрашиваемые элементы, такие как репозитории и т.д. и, что более важно, при следующем когда пользователь войдет в систему, ему не нужно будет подтверждать разрешение на доступ к его репозиториям. (Аналогично этому сайту codefactor)

Я хотел бы получить решение на уровне архитектуры, если не пример кода. Для создания проекта я использую Python (Django), но примеры кода на других языках также приветствуются

ОП может использовать модуль Django Social Auth. В их документации есть целый раздел, посвященный GitHub. Они будут обрабатывать весь этот процесс за вас.

По сути, вот что нужно сделать

1 Установите модуль

pip install social-auth-app-django

2 Добавьте его к вашей settings.py переменной INSTALLED_APPS как

INSTALLED_APPS = [
    ...
    'social_django',
    ...
]

3 Синхронизация базы данных

python manage.py migrate

4 Добавьте бэкенды аутентификации GitHub в настройки Django AUTHENTICATION_BACKENDS

AUTHENTICATION_BACKENDS = [
  ...

  'social_core.backends.github.GithubOAuth2', 
  ...
]

5 Добавить записи URL

urlpatterns = patterns('',
    ...
    url('', include('social_django.urls', namespace='social'))
    ...
)

6 Зарегистрируйте новое приложение на GitHub Developers, задайте URL обратного вызова http://example.com/complete/github/, заменив example.com своим доменом (можно даже http://localhost:8000/complete/github/ при локальном тестировании). В результате будут сгенерированы Client Key и Client Secret.

7 Добавьте эти значения Client ID и Client Secret из GitHub в файл настроек вашего проекта.

SOCIAL_AUTH_GITHUB_KEY = 'a1b2c3d4'
SOCIAL_AUTH_GITHUB_SECRET = 'e5f6g7h8i9`

8 Теперь можно использовать в своем шаблоне, например

<a href="{% url "social:begin" "github" %}">Sign in with GitHub</a>

Нажатие на эту ссылку перенаправит на страницу принятия разрешений, как и в Codefactor.

Помимо документации, есть несколько хороших статей, которые также можно использовать для справки, например Как добавить социальный вход в Django от Витора Фрейтаса.

Вернуться на верх