Как использовать github oauth api в django?

Пользователь

от vladimir , в категории: Python , 7 месяцев назад

Как использовать github oauth api в django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от hermina.hauck , 7 месяцев назад

@vladimir 

Для использования GitHub OAuth API в Django, вы можете использовать библиотеки, такие как django-allauth или python-social-auth. В этом ответе будет рассмотрено, как использовать библиотеку django-allauth.

  1. Установите django-allauth с помощью pip:
1
pip install django-allauth


  1. Добавьте 'allauth' и 'allauth.account' в список установленных приложений в файле settings.py вашего проекта Django:
1
2
3
4
5
6
INSTALLED_APPS = [
    ...
    'allauth',
    'allauth.account',
    ...
]


  1. Укажите настройки аутентификации в файле settings.py:
1
2
3
4
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)


  1. Настройте URL-шаблоны в файле urls.py вашего проекта Django, чтобы добавить маршруты для аутентификации django-allauth:
1
2
3
4
5
urlpatterns = [
    ...
    path('accounts/', include('allauth.urls')),
    ...
]


  1. В файле settings.py настройте OAuth провайдеров:
1
2
3
4
5
6
7
8
9
SOCIALACCOUNT_PROVIDERS = {
    'github': {
        'APP': {
            'client_id': 'Ваш client_id',
            'secret': 'Ваш secret',
            'key': ''
        }
    }
}


Замените 'Ваш client_id' и 'Ваш secret' на реальные значения полученные при создании приложения OAuth на странице GitHub.

  1. Теперь вы можете использовать тег шаблона {% provider_login_url 'github' %} для отображения ссылки на аутентификацию через GitHub.
1
<a href="{% provider_login_url 'github' %}">Войти через GitHub</a>


  1. В вашем представлении Django вы также можете использовать функции allauth для получения данных пользователя GitHub. Ниже приведен пример простого представления, которое приветствует пользователя после аутентификации через GitHub:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from allauth.socialaccount.models import SocialToken

def home(request):
    if request.user.is_authenticated:
        github_token = SocialToken.objects.get(account__user=request.user, account__provider='github')
        # Вы можете использовать токен для доступа к API GitHub
        # Например, github_token.token
        return render(request, 'home.html')
    else:
        return render(request, 'login.html')


Это основные шаги для использования GitHub OAuth API с django-allauth. Вы можете уточнить настройки и настройки в соответствии со своими потребностями.