django - example - google keep api
¿Cómo iniciar sesión con la API de Google+ utilizando Django? (2)
¿Cómo puedo agregar un inicio de sesión de la API de Google+ a mi sitio web de Django?
La respuesta de es correcta, pero python-social-auth
ahora está en desuso y se migra como social-auth-app-django
. Así que esto es lo que hice diferente de las directrices .
- En lugar de
python-social-auth
, instalésocial-auth-app-django
, -
''social.apps.django_app.default''
convierte en''social_django''
-
''social.backends.google.GoogleOAuth2''
ahora es''social_core.backends.google.GoogleOAuth2''
-
url("^soc/", include("social.apps.django_app.urls", namespace="social"))
convierte enurl("^soc/", include("social_django.urls", namespace="social"))
Primero debes crear las credenciales de OAuth para Google+.
- Ir a la consola de desarrolladores de Google
- Crea un nuevo proyecto.
- Vaya a "API y autenticación" -> "Pantalla de autorización" y asigne un nombre a su producto. Clic en Guardar".
- Vaya a "API y autenticación" -> "Credenciales". Debajo de "OAuth", haga clic en "Crear nuevo ID de cliente". Agregar " http://localhost:8000/soc/complete/google-oauth2/ " debe aparecer como una URL de devolución de llamada. Esto solo funcionará para pruebas, asegúrese de incluir su dominio real cuando esté en producción.
Ahora agreguemos python-social-auth
a tu aplicación Django.
- Instala
python-social-auth
conpip
Establezca la configuración de Django apropiada:
- Agregue
''social.apps.django_app.default''
aINSTALLED_APPS
: - Agregue las configuraciones
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
ySOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
con la clave del cliente y el secreto que creó anteriormente. La clave del cliente es el "ID de cliente" que aparece en la pantalla "Credenciales" en la consola de desarrolladores de Google, la que termina en ".apps.googleusercontent.com". Solo toma la parte antes del punto. El secreto aparece como "secreto del cliente". Asegúrate de que la configuración de
AUTHENTICATION_BACKENDS
esté definida explícitamente y que contenga''social.backends.google.GoogleOAuth2''
. Un ejemplo sería:AUTHENTICATION_BACKENDS = ( ''social.backends.google.GoogleOAuth2'', ''django.contrib.auth.backends.ModelBackend'')
Defina la configuración
SOCIAL_AUTH_PIPELINE
como se detalla en la documentación de python-social-auth . Lo que hace cada ajuste está listado en esa página.
Si tiene algo que ver con la información que obtiene de Google+, le recomiendo que defina una función:
def save_profile(backend, user, response, *args, **kwargs): if backend.name == "google-oauth2": # do something
donde
user
es un objetodjango.contrib.auth.models.User
, y laresponse
es un diccionario. Luego, agregue esa función aSOCIAL_AUTH_PIPELINE
utilizando la ruta completa del módulo, después decreate_user
.Si no desea hacer nada con esa información, puede dejar el canal predeterminado tal como está.
- Agregue
Finalmente, querrá agregar las URL de python-social-auth
a los urlpatterns
URL de su sitio:
from django.conf.urls import include
url("^soc/", include("social.apps.django_app.urls", namespace="social"))
¡Y eso debería hacerlo! Es hora de probar. Primero, ./manage.py makemigrations
para las migraciones requeridas de python-social-auth
, y luego ./manage.py migrate
, como se explica here . Luego, puede ejecutar el servidor de desarrollo e ir a http://localhost:8000/soc/login/google-oauth2/?next=/ .
Ojalá no me haya saltado explicando ningún paso y funcionará. Siéntase libre de hacer más preguntas y leer los documentos . Además, aquí hay un ejemplo de trabajo que deberías revisar.