【问题标题】:Django-allauth 0.8.1 Twitter integrationDjango-allauth 0.8.1 Twitter 集成
【发布时间】:2013-06-20 21:17:37
【问题描述】:

我正在使用 Django-allauth,我启用了社交网络登录、google、facebook 和 twitter,由于某种原因 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/

consumer keyconsumer secret也在/admin/socialaccount/socialapp/上配置

版本: django-allauth==0.8.1

当我点击登录屏幕上的 Twitter 按钮时,我得到的只是一个标题为“社交网络登录失败”的页面,没有调试屏幕,我可以使用 google 或 facebook 登录。

这是页面上的网址:http://my_domain.com/accounts/twitter/login/callback/?oauth_token=leC3t4BYr9KVAyW22ixxxxxxyVyOHiqaUnIhXwoyRM&oauth_verifier=WdDAwxpxxxxxMzWAr5tcx3mUfZ63304fsxxxx16qKM

【问题讨论】:

  • 我在一个新的 django 项目中尝试了最新的 django-allauth,一切正常。所以这可能是 Django==1.4.1 django-allauth==0.8.1 python 2.6(和 2.7.3)之间的版本不一致
  • 错误来自于在 views.py 第 84 行 github.com/pennersr/django-allauth/blob/master/allauth/… OAuthError 中手动引发错误,位于 /accounts/twitter/login/callback/ 无法访问“api.twitter.com”中的私有资源。请求方法:GET 请求 URL:127.0.0.1:8000/accounts/twitter/login/callback/… Django 版本:1.4.1 异常类型:OAuthError 异常值:无法访问“api.twitter.com”的私有资源。 Python版本:2.7.3

标签: django-allauth


【解决方案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'

【讨论】:

    猜你喜欢
    • 2012-07-11
    • 2012-07-28
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多