Как я могу добавить подписку на 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"))