Я пытаюсь использовать пакет Django Social Auth для подключения к Twitter, но мне Мне трудно понять, как именно это сделать, поскольку я не могу найти никаких примеров. Я предполагаю, что Django Social Auth
— лучший пакет для этой цели.
Я просмотрел несколько примеров, использующих Facebook, и на их основе добавил в свой файл settings.py
следующее:
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
В urls.py
я добавил следующие строки:
url('', include('social_auth.urls')),
url(r'^twitter/', twitter_app, name='twitter_app')
И в файл с именем twitter.py
я добавил следующее, чтобы создать представление:
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))
Затем я создал файл шаблона с именем twitter.html
со следующей структурой:
{% extends "base.html" %}
{% block script %}
Login with <a href="{% url socialauth_begin 'twitter' %}">Twitter</a>
{% endblock %}
Это приводит к следующему сообщению об ошибке:
Веб-страница по адресу http://example.com/twitter/done вызвала слишком много переадресаций.
Я немного потерялся относительно того, что я должен делать в целом. Я создал приложение в твиттере с URL-адресом моего сайта для создания ключа API/секрета. Будем очень признательны за любые советы о том, в каком направлении мне идти, или ссылки на рабочие примеры.
{% url socialauth_begin "twitter" %}
, а не'twitter_app'
. Это имя представляет серверную часть, которую вы собираетесь использовать. Также вы должны включить DSAurls.py
в свои основные URL-адреса с помощью такого правила:('', include('social_auth.urls'))
. Этот параметрSOCIAL_AUTH_ENABLED_BACKENDS
больше не существует. - person omab   schedule 05.03.2013mysite.com/twitter
, я просто переношу на страницу, как если бы я вошел в систему (хотя мне ничего не нужно было делать). - person djq   schedule 05.03.2013url('', include('social_auth.urls')),
) - person Hedde van der Heide   schedule 15.03.2013