Sto provando a utilizzare il pacchetto Django Social Auth per connettersi a Twitter, ma ho difficoltà a capire come eseguire esattamente questa operazione poiché non riesco a trovare alcun esempio. Suppongo che Django Social Auth
sia il miglior pacchetto da utilizzare per questo scopo.Come posso utilizzare Django Social Auth per connettermi con Twitter?
Ho guardato alcuni esempi che utilizzano Facebook, e da questo hanno aggiunto il seguente al mio settings.py
lima:
AUTHENTICATION_BACKENDS = (
'social_auth.backends.twitter.TwitterBackend',
'django.contrib.auth.backends.ModelBackend',
)
# overwriting default templates
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.static',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.contrib.messages.context_processors.messages',
'social_auth.context_processors.social_auth_by_type_backends',
'django.contrib.auth.context_processors.auth',
)
SOCIAL_AUTH_ENABLED_BACKENDS = ('twitter')
SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'
# Social media login info:
TWITTER_CONSUMER_KEY = 'xxx'
TWITTER_CONSUMER_SECRET = 'xxxxxx'
# 'magic' settings
SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete'
SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'associate_complete'
SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
'social_auth.backends.pipeline.associate.associate_by_email',
'social_auth.backends.pipeline.misc.save_status_to_session',
'social.pipeline.redirect_to_form',
'social.pipeline.username',
'social_auth.backends.pipeline.user.create_user',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.social.load_extra_data',
'social_auth.backends.pipeline.user.update_user_details',
'social_auth.backends.pipeline.misc.save_status_to_session',
'social.pipeline.redirect_to_form2',
'social.pipeline.first_name',
)
SOCIAL_AUTH_FORCE_POST_DISCONNECT = True
SOCIAL_AUTH_SESSION_EXPIRATION = False
In urls.py
ho aggiunto le seguenti righe:
url('', include('social_auth.urls')),
url(r'^twitter/', twitter_app, name='twitter_app')
E in un file chiamato twitter.py
ho aggiunto quanto segue per creare una vista:
from django.contrib.auth import BACKEND_SESSION_KEY
from django.contrib.auth.models import AnonymousUser
from django.http import HttpResponse
from django.http import HttpResponseRedirect #dq
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.views.decorators.csrf import csrf_exempt
from django.core.cache import cache
from social_auth.models import UserSocialAuth
from social_auth.views import complete as social_complete
from social_auth.utils import setting
from social_auth.backends.twitter import TwitterBackend
# twitter login
def twitter_app(request):
"""twitter login"""
if request.user.is_authenticated():
return HttpResponseRedirect('done')
else:
return render_to_response('twitter.html', {'twitter_app_id':setting('TWITTER_CONSUMER_KEY'),
'warning': request.method == 'GET'}, RequestContext(request))
Ho quindi creato un file modello chiamato twitter.html
con la seguente struttura:
{% extends "base.html" %}
{% block script %}
Login with <a href="{% url socialauth_begin 'twitter' %}">Twitter</a>
{% endblock %}
Il risultato è il seguente messaggio di errore:
La pagina web all'indirizzo http://example.com/twitter/done ha provocato anche molti reindirizzamenti.
Sono un po 'perso per quello che dovrei fare in generale. Ho creato un'app su twitter con l'url del mio sito per generare l'API/chiave segreta. Qualunque consiglio su quale direzione dovrei andare, o collegamenti a esempi di lavoro sarebbe molto apprezzato.
L'URL per avviare l'autenticazione di Twitter dovrebbe essere '{url% socialauth_begin "Twitter" %}', 'non 'twitter_app''. Quel nome rappresenta il back-end che intendi utilizzare.Inoltre dovresti includere DSA 'urls.py' nei tuoi URL principali con una regola come questa:' ('', include ('social_auth.urls')) '. Questa impostazione 'SOCIAL_AUTH_ENABLED_BACKENDS' non esiste più. – omab
Grazie a @omab ho apportato queste modifiche e quando clicco su 'mysite.com/twitter' mi porta in una pagina come se fossi loggato (anche se non dovevo fare nulla). – djq
prova a creare/twitter/done/pagina – catherine