[英]Django-Allauth social login not available (socialaccount.providers not passed to templates)
我使用的是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
的網站: example.com:8000
創建一個具有提供程序Facebook
應用,相應的Client id
和Secret key
也將先前創建的網站添加到了“站點”中。 example.com:8000
)。
問題截圖:
模板代碼:
編輯:
我懷疑問題是特定於django 1.8的,因為自django 1.8起就不推薦使用TEMPLATE_CONTEXT_PROCESSORS,並且allauth期望設置文件中的TEMPLATE_CONTEXT_PROCESSORS。
謝謝。
在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',
],
},
}
]
如果那是您遇到的唯一問題,那么此更改應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.