我在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 id
和Secret key
也将之前创建的网站添加到了网站'
在facebook中,开发人员将域设置为站点中的同一域(example.com:8000
)。
问题截图:
模板代码:
Login template source code和 Provider list snippet source code
修改:
我怀疑问题是django 1.8具体,因为自django 1.8以来不推荐使用TEMPLATE_CONTEXT_PROCESSORS,allauth期望设置文件中有TEMPLATE_CONTEXT_PROCESSORS。
谢谢。
答案 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',
],
},
}
]
如果这是您遇到的唯一问题,那么此更改应该解决问题。