Как добавить 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"?