2013-06-24 5 views
1

Я использую Django-allauth, я включена социальная сеть логины, Google, Facebook и Twitter, почему-то твиттер не работает,Django-allauth 0.8.1 Twitter интеграции

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

Настройки .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/

Ключ потребителя, и Криптоключ, также настроены на/админ/socialaccount/socialapp/

Версия: Джанго-allauth == 0.8.1

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

Это гиперссылка на странице: http://my_domain.com/accounts/twitter/login/callback/?oauth_token=leC3t4BYr9KVAyW22ixxxxxxyVyOHiqaUnIhXwoyRM&oauth_verifier=WdDAwxpxxxxxMzWAr5tcx3mUfZ63304fsxxxx16qKM

+0

Я попробовал последние Джанго-allauth в свежем проекте Джанго и все работает отлично. Таким образом, это может быть, например, несоответствие версии, Django == 1.4.1 django-allauth == 0.8.1 python 2.6 (и 2.7.3) –

+0

Ошибки, полученные вручную с помощью ошибки в view.py line 84 https : //github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/providers/oauth/views.py#L84 OAuthError at/accounts/twitter/login/callback/ Нет доступа к частным ресурсам в "api.twitter.com". Запрос Метод: \t GET Request URL: \t http://127.0.0.1:8000/accounts/twitter/login/callback/?oauth_token=sJ1VbozWsHPPMPHHr5xxxSly5vxxxxoauth_verifier=7EkHIxxxxxUsooYqS9HHHTTAFJkExxxxxx4sMUZQGY Джанго Версия: \t 1.4.1 Исключение Тип: \t OAuthError Исключительное значение: \t Нет доступа к частным ресурсам на странице «api.twitter.com». Python Версия: \t 2.7.3 –

ответ

0

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

После нескольких часов отладки и разочарования, я, наконец, был мой ответ.

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

allauth.socialaccount.providers.views.py Line - 17

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

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

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