Приложение 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 от Витора Фрейтаса.