social_core - Ejemplo de plantilla Python Social Auth Django
social_core django (3)
¿Alguien tiene un ejemplo abierto que usa Python Social Auth con Django en plantillas?
Eché un vistazo en su repositorio de Github, y en el ejemplo de django, no hay nada sobre cómo lidiar con eso en las plantillas (por ejemplo, hacer inicio de sesión, cerrar sesión, etc.).
Dentro de la python-social-auth hay un ejemplo. Solo necesita instalar python-social-auth, configurar su base de datos y su aplicación de facebook u otra aplicación social y poner su Secreto y clave en el archivo settings.py y ejecutar la aplicación. Hay una plantilla con etiquetas de plantilla y mucho más. Haga clic aquí: https://github.com/omab/python-social-auth y vea la carpeta de ejemplos.
Digamos que siguió las pautas de configuración de Python Social Auth en http://psa.matiasaguirre.net/docs/configuration/django.html y desea utilizar el inicio de sesión de Facebook. La configuración de su backend en settings.py debería verse:
AUTHENTICATION_BACKENDS = (
''social.backends.facebook.FacebookOAuth2'',
''django.contrib.auth.backends.ModelBackend'',
)
Debes registrarte como desarrollador de Facebook y crear una aplicación y luego completar datos adicionales en tu archivo settings.py:
SOCIAL_AUTH_FACEBOOK_KEY = ''xxxxxxxxxxxxxx''
SOCIAL_AUTH_FACEBOOK_SECRET = ''xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''
SOCIAL_AUTH_FACEBOOK_SCOPE = [''email'']
Supongamos que después de iniciar sesión desea que los usuarios sean redirigidos a la página de miembros, así que agrega esta configuración a su configuración.py:
LOGIN_REDIRECT_URL = ''/members''
Digamos que creó login_app en su proyecto de django, así como creó su vista de inicio con la plantilla home.html y también creó la vista de miembros con la plantilla members.html (debe tener su directorio de plantillas funcionando).
De acuerdo a las pautas de configuración, nuestras urls.py deben verse
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('''',
url('''', include(''social.apps.django_app.urls'', namespace=''social'')),
url(r''^admin/'', include(admin.site.urls)),
)
Si intentáramos con bla-bla-bla url con DEBUG = True settings, obtendríamos un error:
Using the URLconf defined in your_project.urls, Django tried these URL patterns, in this order:
^login/(?P<backend>[^/]+)/$ [name=''begin'']
^complete/(?P<backend>[^/]+)/$ [name=''complete'']
^disconnect/(?P<backend>[^/]+)/$ [name=''disconnect'']
^disconnect/(?P<backend>[^/]+)/(?P<association_id>[^/]+)/$ [name=''disconnect_individual'']
^admin/
The current URL, bla-bla-bla/, didn''t match any of these.
Para una prueba muy simple, tenemos que agregar la vista de inicio, la vista de los miembros y el cierre de sesión (el inicio de sesión ya está manejado), por lo que nuestra urls.py actualizada debe ser:
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('''',
url('''', include(''social.apps.django_app.urls'', namespace=''social'')),
url(r''^admin/'', include(admin.site.urls)),
url(r''^$'', ''login_app.views.home'', name=''home''),
url(r''^members/'', ''login_app.views.members'', name=''members''),
url(r''^logout/$'', ''login_app.views.logout'', name=''logout''),
)
Debajo de nuestro directorio login_app deberíamos tener archivos (no prestes atención a los archivos * .pyc y la carpeta de migraciones está presente porque uso la versión django 1.7b4):
login_app/
├── admin.py
├── __init__.py
├── __init__.pyc
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── views.py
└── views.pyc
Nuestras vistas.py deben verse como:
from django.shortcuts import render, redirect
from django.contrib.auth import logout as auth_logout
def home(request):
context = {}
template = ''home.html''
return render(request, template, context)
def members(request):
context = {}
template = ''members.html''
return render(request, template, context)
def logout(request):
auth_logout(request)
return redirect(''/'')
Otros archivos (incluidos los modelos.py) que podemos dejar sin agregar nada.
Para iniciar sesión con facebook, debemos redirigir a sus usuarios a "login / facebook". Entonces, solo puede agregar este enlace o botón donde sea apropiado en alguna parte de su plantilla home.html:
<a href="login/facebook">Login with facebook</a>
Después de presionar este enlace (en caso de que settings.py, urls.py, views.py estén bien y su aplicación de Facebook esté bien configurada), los usuarios ingresarán a Facebook y serán redirigidos a la página de miembros. Si inicia sesión en el administrador de django, debería poder ver una nueva entrada en [Inicio ›Predeterminado› Autorizaciones sociales de usuarios] y un nuevo usuario en [Inicio ›Autenticación y autorización› Usuarios].
Cuando el usuario se autentica y se redirige a la página de miembros, puede tener información del usuario como nombre de usuario, nombre, apellido, correo electrónico. Puede mostrar esa información agregando a su plantilla members.html:
<p>User''s name and surname: {{ user.first_name }} {{ user.last_name}}</p>
<p>Username: {{ user.username }}</p>
<p>E-mail: {{ user.email }}</p>
Como ya notó, para cerrar sesión hicimos una aplicación en nuestro views.py:
def logout(request):
auth_logout(request)
return redirect(''/'')
Entonces podemos agregar un enlace en nuestra plantilla members.html:
<a href="/logout">Logout</a>
Y eso sería suficiente para cerrar la sesión del usuario y redirigirlo a la página de inicio inicial.
Este sería un ejemplo muy simple que puede dar una mejor comprensión de cómo iniciar sesión y cerrar sesión con Python Social Auth.
Encontré este tutorial más útil: http://www.artandlogic.com/blog/2014/04/tutorial-adding-facebooktwittergoogle-authentication-to-a-django-application/ La aplicación de ejemplo en python-social-auth es comparativamente Terso y difícil de seguir.