Django-allauth 0.8.1 интеграция с Twitter

Я использую Django-allauth, я включил вход в социальные сети, google, facebook и twitter, по какой-то причине твиттер не работает,

Конфигурации

Settings.py (сокращенно)

DEBUG = True
SOCIALACCOUNT_QUERY_EMAIL="ACCOUNT_EMAIL_REQUIRED"

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    "allauth.account.context_processors.account",
    "allauth.socialaccount.context_processors.socialaccount"
)


AUTHENTICATION_BACKENDS = (
    "django.contrib.auth.backends.ModelBackend",
    "allauth.account.auth_backends.AuthenticationBackend",
    )

INSTALLED_APPS = (  
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.google',
    'allauth.socialaccount.providers.twitter',

)

# Social login
SOCIALACCOUNT_PROVIDERS = \
    { 'facebook':
        { 'SCOPE': ['email', 'publish_stream'],
          'AUTH_PARAMS': { 'auth_type': 'reauthenticate' },
          'METHOD': 'js_sdk'},

    'google':
        { 'SCOPE': ['https://www.googleapis.com/auth/userinfo.profile','https://www.googleapis.com/auth/userinfo.email'],
          'AUTH_PARAMS': { 'access_type': 'online' } }  

}


# django-allauth settings
EMAIL_CONFIRMATION_DAYS = 7
ACCOUNT_AUTHENTICATION_METHOD = "username"
ACCOUNT_EMAIL_REQUIRED=False
ACCOUNT_EMAIL_VERIFICATION=False
ACCOUNT_USER_DISPLAY=lambda user: user.profile

urls.py (сокращенно)

urlpatterns = patterns('',     
url(r'^accounts/', include('allauth.urls')), 
)

Настройки приложения Twitter

http://my_domain.com/accounts/twitter/login/callback/

ключ потребителя и секрет потребителя также настраиваются в / admin / socialaccount / socialapp /.

Версия: django-allauth == 0.8.1

Когда я нажимаю кнопку Twitter на экране входа в систему, все, что я получаю, это страница с заголовком «Ошибка входа в социальную сеть», без экрана отладки, я могу войти в систему с помощью Google или Facebook.

Это URL-адрес на странице: / twitter / login / callback /? oauth_token = leC3t4BYr9KVAyW22ixxxxxxyVyOHiqaUnIhXwoyRM & oauth_verifier = WdDAwxpxxxxxMzWAr5tcx3mUfZ63304fsxxxx16qKM


person Ryu_hayabusa    schedule 24.06.2013    source источник
comment
Я попробовал последний django-allauth в новом проекте django, и все работает нормально. Так что, вероятно, это может быть несовместимость версий между Django == 1.4.1 django-allauth == 0.8.1 python 2.6 (и 2.7.3)   -  person Ryu_hayabusa    schedule 25.06.2013
comment
Ошибки, возникшие в результате ручного создания ошибки в строке 84 views.py github.com/pennersr/django-allauth/blob/master/allauth/ OAuthError в / accounts / twitter / login / callback / Нет доступа к личным ресурсам на api.twitter.com. Метод запроса: GET URL-адрес запроса: account / twitter / login / callback / Версия Django: 1.4.1 Тип исключения: OAuthError Значение исключения: нет доступа к частным ресурсам на api.twitter.com. Версия Python: 2.7.3   -  person Ryu_hayabusa    schedule 26.06.2013


Ответы (1)


Лучший вариант - обновить allauth до 0.8.3 или новее :)

После нескольких часов отладки и разочарований я наконец получил ответ.

Twitter обновил свой API несколько месяцев назад, поэтому он больше не совместим с allauth == 0.8.1.

Строка allauth.socialaccount.providers.views.py - 17

url = 'https://twitter.com/account/verify_credentials.json'

это должно быть

url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
person Ryu_hayabusa    schedule 26.06.2013