social_django social_core google auth app python django django-templates python-social-auth

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.