Django Allauth

django-allauth - это комплексное решение для аутентификации в Django, поддерживающее социальные провайдеры.

Установка

1# Установка пакета
2pip install django-allauth
1# Или через Poetry
2poetry add django-allauth

Настройка settings.py

 1INSTALLED_APPS = [
 2    'django.contrib.auth',
 3    'django.contrib.messages',
 4    'allauth',
 5    'allauth.account',
 6    'allauth.socialaccount',
 7    'allauth.socialaccount.providers.google',
 8    'allauth.socialaccount.providers.github',
 9]
10
11AUTHENTICATION_BACKENDS = [
12    'django.contrib.auth.backends.ModelBackend',
13    'allauth.account.auth_backends.AuthenticationBackend',
14]
15
16SOCIALACCOUNT_PROVIDERS = {
17    'google': {
18        'SCOPE': ['profile', 'email'],
19        'AUTH_PARAMS': {'access_type': 'online'},
20    }
21}

Конфигурация URLs

1urlpatterns = [
2    path('accounts/', include('allauth.urls')),
3]

Настройка Google OAuth

 1# settings.py
 2SOCIALACCOUNT_PROVIDERS = {
 3    'google': {
 4        'SCOPE': [
 5            'profile',
 6            'email',
 7        ],
 8        'AUTH_PARAMS': {
 9            'access_type': 'online',
10        }
11    }
12}
13
14# В админке создай Social Application
15# Provider: Google
16# Client ID: ваш Google OAuth Client ID
17# Secret Key: ваш Google OAuth Secret

Кастомизация шаблонов

1<!-- templates/account/login.html -->
2{% extends "base.html" %}
3{% load socialaccount %}
4
5<h2>Войти</h2>
6<a href="{% provider_login_url 'google' %}">Войти через Google</a>
7<a href="{% provider_login_url 'github' %}">Войти через GitHub</a>

FAQ

Q: Как получить дополнительные данные от провайдера?
A: Настрой SCOPE в SOCIALACCOUNT_PROVIDERS и используй сигналы.

Q: Можно ли кастомизировать процесс регистрации?
A: Да, используй кастомные адаптеры и формы.