Как добавить Google OAuth в Django

27 июня 2018 г. 10:18

Для добавления аутентификации воспользуемся библиотекой Python Social Auth

Выполняем установку

$ pip install social-auth-app-django

Добавим ‘social_django’ в INSTALLED_APPS, после чего выполним миграцию
python manage.py migrate

Добавим желаемые бекенды

AUTHENTICATION_BACKENDS = (
'social_core.backends.open_id.OpenIdAuth',
'social_core.backends.google.GoogleOpenId',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.google.GoogleOAuth',
'social_core.backends.twitter.TwitterOAuth',
'social_core.backends.yahoo.YahooOpenId',
...
'django.contrib.auth.backends.ModelBackend',
)

В нашем случае это 'social_core.backends.google.GoogleOAuth'. Не следует забывать про 'django.contrib.auth.backends.ModelBackend', иначе пользователи не смогут входить через встроенную систему аутентификации.

Добавим контекстные процессоры в settings.py

TEMPLATES = [
{
...
'OPTIONS': {
...
'context_processors': [
...
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
...
]
}
}
]

Добавим в urls.py

url(r'^auth/', include('social_django.urls', namespace='social'))


В шаблон вставим ссылку для входа через google
<a href="{% url "social:begin" "google-oauth2" %}">Google+</a>

Получаем учетные данные OAuth

Откроем страницу https://console.developers.google.com.
Нажимаем: выбрать проект -> создать проект
Когда проект создан, выбираем: учетные данные -> окно запроса доступа OAuth
сохраняем с желаемым названием.
Во вкладке "Учетные данные" выбираем: Создать учетные данные -> идентификатор клиента OAuth. Тип приложения: веб-приложение.
В открывшейся форме указываем разрешенные URI перенаправления (на время тестирования укажем http://127.0.0.1:8000/auth/complete/google-oauth2/, затем следует поменять на реальный домен приложения)
Гугл выдаст нам идентификатор клиента и секрет. Их нужно указать в файле settings.py:

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY =''идентификатор клиента"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''секрет"

Теперь в меню слева выбираем Панель управления, а в ней - включить api и сервисы. Находим Google+ API и жмем Включить.

Может также понадобиться указать в settings.py
USE_X_FORWARDED_HOST = True
для получения реального хоста.

x Удалить пост "Как добавить Google OAuth в Django"?