Django
Django y redes sociales
Buscar..
Parámetros
Ajuste | Hace |
---|---|
Algunas configuraciones | Prácticas configuraciones básicas que van con Django-Allauth (que uso la mayor parte del tiempo). Para más opciones de configuración, vea Configuraciones. |
ACCOUNT_AUTHENTICATION_METHOD (= "username" o "email" o "username_email") | Especifica el método de inicio de sesión que se debe usar, ya sea que el usuario inicie sesión ingresando su nombre de usuario, dirección de correo electrónico o cualquiera de los dos. La configuración de "correo electrónico" requiere ACCOUNT_EMAIL_REQUIRED = Verdadero |
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) | Determina la fecha de vencimiento de los correos de confirmación por correo electrónico (número de días). |
ACCOUNT_EMAIL_REQUIRED (= False) | El usuario debe entregar una dirección de correo electrónico al registrarse. Esto va en tándem con la configuración ACCOUNT_AUTHENTICATION_METHOD |
ACCOUNT_EMAIL_VERIFICATION (= "opcional") | Determina el método de verificación de correo electrónico durante el registro: elija uno de "obligatorio", "opcional" o "ninguno". Cuando se configura en "obligatorio", el usuario no puede iniciar sesión hasta que se verifique la dirección de correo electrónico. Elija "opcional" o "ninguno" para permitir inicios de sesión con una dirección de correo electrónico no verificada. En el caso de "opcional", el correo de verificación de correo electrónico aún se envía, mientras que en el caso de "ninguno" no se envían correos de verificación de correo electrónico. |
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) | Número de intentos de inicio de sesión fallidos. Cuando se excede este número, el usuario tiene prohibido iniciar sesión durante los segundos ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT especificados. Si bien esto protege la vista de inicio de sesión de Allauth, no protege el inicio de sesión del administrador de Django para que no sea forzado. |
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= Falso) | Determina si el usuario se desconecta automáticamente o no después de cambiar o configurar su contraseña. |
SOCIALACCOUNT_PROVIDERS (= dict) | Diccionario que contiene la configuración específica del proveedor. |
Manera fácil: python-social-auth
python-social-auth es un marco que simplifica el mecanismo de autenticación y autorización social. Contiene muchos backends sociales (Facebook, Twitter, Github, LinkedIn, etc.)
INSTALAR
Primero necesitamos instalar el paquete python-social-auth con
pip install python-social-auth
o descargue el código desde github. Ahora es un buen momento para agregar esto a su requirements.txt
archivo.
Configurando ajustes.py
En la configuración.py agregue:
INSTALLED_APPS = (
...
'social.apps.django_app.default',
...
)
CONFIGURACIÓN DE BACKENDS
AUTHENTICATION_BACKENDS contiene los backends que usaremos, y solo tenemos que poner lo que necesitamos.
AUTHENTICATION_BACKENDS = (
'social.backends.open_id.OpenIdAuth',
'social.backends.google.GoogleOpenId',
'social.backends.google.GoogleOAuth2',
'social.backends.google.GoogleOAuth',
'social.backends.twitter.TwitterOAuth',
'social.backends.yahoo.YahooOpenId',
...
'django.contrib.auth.backends.ModelBackend',
)
Es posible que la settings.py
proyecto.py todavía no tenga un campo AUTHENTICATION_BACKENDS
. Si ese es el caso agrega el campo. Asegúrese de no perderse 'django.contrib.auth.backends.ModelBackend',
ya que maneja el inicio de sesión por nombre de usuario / contraseña.
Si usamos por ejemplo Facebook y Linkedin Backends necesitamos agregar las claves API
SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'
y
SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'
Nota : Puede obtener las claves nedded en los desarrolladores de Facebook y en los desarrolladores de Linkedin y aquí puede ver la lista completa y su forma respectiva de especificar la clave de la API y el secreto de la clave.
Nota sobre las claves secretas: las claves secretas deben mantenerse secretas. Aquí hay una explicación de desbordamiento de pila que es útil. Este tutorial es útil para aprender sobre variables ambientales.
TEMPLATE_CONTEXT_PROCESSORS ayudará a las redirecciones, backends y otras cosas, pero al principio solo necesitamos estos:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
...
)
En Django 1.8, la configuración de TEMPLATE_CONTEXT_PREPROCESSORS
como se muestra arriba está en desuso. Si este es el caso para ti, lo agregarás dentro del dictado de TEMPLATES
. El tuyo debe verse algo similar a esto:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
],
},
},
]
USANDO UN USUARIO PERSONALIZADO
Si está utilizando un modelo de usuario personalizado y desea asociarse con él, simplemente agregue la siguiente línea (aún en settings.py )
SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'
CustomUser
es un modelo que hereda o CustomUser
del usuario predeterminado.
Configurando urls.py
# if you haven't imported inlcude make sure you do so at the top of your file
from django.conf.urls import url, include
urlpatterns = patterns('',
...
url('', include('social.apps.django_app.urls', namespace='social'))
...
)
Luego necesitamos sincronizar la base de datos para crear los modelos necesarios:
./manage.py migrate
¡Finalmente podemos jugar!
en alguna plantilla necesitas agregar algo como esto:
<a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Login with Facebook</a>
<a href="{% url 'social:begin' 'linkedin' %}?next={{ request.path }}">Login with Linkedin</a>
Si usa otro backend, simplemente cambie 'facebook' por el nombre de backend.
Desconectando usuarios
Una vez que haya iniciado sesión en los usuarios, es probable que desee crear la funcionalidad para volver a cerrarlos. En alguna plantilla, probablemente cerca de donde se mostró la plantilla de inicio de sesión, agregue la siguiente etiqueta:
<a href="{% url 'logout' %}">Logout</a>
o
<a href="/logout">Logout</a>
urls.py
editar su archivo urls.py
con un código similar a:
url(r'^logout/$', views.logout, name='logout'),
Por último, edita tu archivo views.py con un código similar a:
def logout(request):
auth_logout(request)
return redirect('/')
Usando Django Allauth
Para todos mis proyectos, Django-Allauth sigue siendo uno que es fácil de configurar y viene de la caja con muchas características que incluyen pero no se limitan a:
- Unas 50+ autenticaciones de redes sociales.
- Mezclar registro de cuentas locales y sociales.
- Múltiples cuentas sociales
- Registro instantáneo opcional para cuentas sociales, sin preguntas
- Gestión de la dirección de correo electrónico (varias direcciones de correo electrónico, configuración de un primario)
- Contraseña olvidada flujo Correo electrónico flujo de verificación de dirección
Si está interesado en ensuciarse las manos, Django-Allauth se sale del camino, con configuraciones adicionales para ajustar el proceso y el uso de su sistema de autenticación.
Los pasos a continuación asumen que estás usando Django 1.10+
Pasos de configuración:
pip install django-allauth
En su archivo settings.py
, realice los siguientes cambios:
# Specify the context processors as follows:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Already defined Django-related contexts here
# `allauth` needs this from django. It is there by default,
# unless you've devilishly taken it away.
'django.template.context_processors.request',
],
},
},
]
AUTHENTICATION_BACKENDS = (
# Needed to login by username in Django admin, regardless of `allauth`
'django.contrib.auth.backends.ModelBackend',
# `allauth` specific authentication methods, such as login by e-mail
'allauth.account.auth_backends.AuthenticationBackend',
)
INSTALLED_APPS = (
# Up here is all your default installed apps from Django
# The following apps are required:
'django.contrib.auth',
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
# include the providers you want to enable:
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
)
# Don't forget this little dude.
SITE_ID = 1
Hecho con los cambios en el archivo settings.py
arriba, muévase al archivo urls.py
Puede ser su yourapp/urls.py
o su ProjectName/urls.py
Normalmente, prefiero el ProjectName/urls.py
urlpatterns = [
# other urls here
url(r'^accounts/', include('allauth.urls')),
# other urls here
]
Simplemente agregando el include('allauth.urls')
, te da estas urls gratis:
^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>[-:\w]+)/$ [name='account_confirm_email']
^accounts/ ^ ^password/reset/$ [name='account_reset_password']
^accounts/ ^ ^password/reset/done/$ [name='account_reset_password_done']
^accounts/ ^ ^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$ [name='account_reset_password_from_key']
^accounts/ ^ ^password/reset/key/done/$ [name='account_reset_password_from_key_done']
^accounts/ ^social/
^accounts/ ^google/
^accounts/ ^twitter/
^accounts/ ^facebook/
^accounts/ ^facebook/login/token/$ [name='facebook_login_by_token']
Finalmente, python ./manage.py migrate
para cometer las migraciones de Django-allauth a la base de datos.
Como de costumbre, para poder iniciar sesión en su aplicación utilizando cualquier red social que haya agregado, deberá agregar los detalles de la cuenta social de la red.
Inicie sesión en el administrador de Django ( localhost:8000/admin
) y en Social Applications
en el enlace añada su cuenta social.
Es posible que necesite cuentas en cada proveedor de autenticación para obtener detalles para completar en las secciones de Aplicaciones sociales.
Para configuraciones detalladas de lo que puede tener y modificar, vea la página de Configuraciones .