Django-Allauth社交登录不可用(socialaccount.providers未传递给模板)

时间:2015-05-08 01:35:18

标签: python django facebook facebook-graph-api django-allauth

我在django 1.8和最新的django-allauth。我已按照官方文档进行安装。然而,在创建Facebook社交应用程序后,我在登录页面中看不到它。无论如何,这就是我所做的:

# Settings.py
INSTALLED_APPS = (
    ...
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    # Required by `allauth` template tags
    'django.core.context_processors.request',
    # `allauth` specific context processors
    'allauth.account.context_processors.account',
    'allauth.socialaccount.context_processors.socialaccount',
)

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',
    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)

SOCIALACCOUNT_PROVIDERS = {
    'facebook':
        {'SCOPE': ['email', 'public_profile', 'user_friends'],
        'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
        'METHOD': 'js_sdk',  # instead of 'oauth2'
        'VERIFIED_EMAIL': False,}
}

SITE_ID = 1

创建了一个域名为example.com:8000的网站 创建了一个包含提供商Facebook的Facebook应用,相应的Client idSecret key也将之前创建的网站添加到了网站' 在facebook中,开发人员将域设置为站点中的同一域(example.com:8000)。

问题截图:

enter image description here

模板代码:

Login template source codeProvider list snippet source code

修改:

我怀疑问题是django 1.8具体,因为自django 1.8以来不推荐使用TEMPLATE_CONTEXT_PROCESSORS,allauth期望设置文件中有TEMPLATE_CONTEXT_PROCESSORS。

谢谢。

1 个答案:

答案 0 :(得分:0)

在Django 1.8中,TEMPLATE_CONTEXT_PROCESSORS设置以这种方式处理:

TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(PROJECT_ROOT, 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            # needed for admin templates
            'django.contrib.auth.context_processors.auth',
            # allauth needs this from django
            'django.core.context_processors.request',
            # allauth specific context processors
            'sites.allauth.account.context_processors.account',
            'sites.allauth.socialaccount.context_processors.socialaccount',
          ],
       },
    }
]

如果这是您遇到的唯一问题,那么此更改应该解决问题。