Как я могу добавить подписку на API Google+ на свой сайт Django?
Как войти в Google+ API с помощью Django?
Ответ 1
Сначала вы должны создать учетные данные OAuth для Google +.
- Перейдите в Консоль разработчика Google
- Создайте новый проект.
- Перейдите к "API и аутентификации" → "Экран авторизации" и дайте вашему продукту имя. Нажмите "Сохранить".
- Перейдите к "API-интерфейсам и аутентификации" → "Учетные данные". В разделе "OAuth" нажмите "Создать новый идентификатор клиента". Добавить " http://localhost:8000/soc/complete/google-oauth2/" следует указывать в качестве URL-адреса обратного вызова. Это будет работать только для тестирования, убедитесь, что вы введете свой фактический домен в процессе производства.
Теперь добавьте python-social-auth
в ваше приложение Django.
- Установите
python-social-auth
с помощьюpip
-
Задайте соответствующие настройки Django:
- Добавить
'social.apps.django_app.default'
вINSTALLED_APPS
: - Добавьте настройки
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
иSOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
с помощью ключа клиента и секрет, который вы создали ранее. Ключ клиента - это "Идентификатор клиента", указанный на экране "Учетные данные" на консоли разработчика Google, который заканчивается на ".apps.googleusercontent.com". Только принимайте участие перед точкой. Секрет указан как "Клиентский секрет". -
Убедитесь, что параметр
AUTHENTICATION_BACKENDS
явно определен и содержит'social.backends.google.GoogleOAuth2'
. Примером может служить:AUTHENTICATION_BACKENDS = ( 'social.backends.google.GoogleOAuth2', 'django.contrib.auth.backends.ModelBackend')
-
Определите параметр
SOCIAL_AUTH_PIPELINE
, как описано в документации python-social-auth. Все настройки указаны на этой странице.
Если у вас есть что-то делать с информацией, которую вы получаете из Google+, я рекомендую определить функцию:
def save_profile(backend, user, response, *args, **kwargs): if backend.name == "google-oauth2": # do something
где
user
- объектdjango.contrib.auth.models.User
, аresponse
- словарь. Затем добавьте эту функцию вSOCIAL_AUTH_PIPELINE
, используя полный путь модуля, послеcreate_user
.Если вы не хотите ничего делать с этой информацией, вы можете оставить конвейер по умолчанию как есть.
- Добавить
Наконец, вы захотите добавить URL-адреса python-social-auth
на свой сайт urlpatterns
:
from django.conf.urls import include
url("^soc/", include("social.apps.django_app.urls", namespace="social"))
И это должно быть! Это время для тестирования. Во-первых, ./manage.py makemigrations
для требуемых миграций python-social-auth
, а затем ./manage.py migrate
, как описано здесь. Затем вы можете запустить сервер разработки и перейти к http://localhost:8000/soc/login/google-oauth2/?next=/.
Надеюсь, я не пропустил объяснение какого-либо шага, и это сработает. Не стесняйтесь задавать больше вопросов и читать документы. Кроме того, здесь рабочий пример, который вы должны проверить.
Ответ 2
@rhaps0dy ответ правильный, но python-social-auth
теперь устарел и перенесен как social-auth-app-django
. Так вот что я сделал иначе, чем @rhaps0dy.
- Вместо
python-social-auth
я установилsocial-auth-app-django
, -
'social.apps.django_app.default'
становится'social_django'
-
'social.backends.google.GoogleOAuth2'
теперь'social_core.backends.google.GoogleOAuth2'
-
url("^soc/", include("social.apps.django_app.urls", namespace="social"))
становитсяurl("^soc/", include("social_django.urls", namespace="social"))