我可以成功使用django-allauth让用户通过facebook的OAuth2机制登录。现在我想通过facebook的JS sdk启用登录。
docs说
对于Facebook,支持OAuth2和Facebook Connect Javascript SDK。你甚至可以混合两者。
不幸的是,示例代码没有显示如何使用js sdk。通过阅读代码我发现我需要设置
SOCIALACCOUNT_PROVIDERS = {
'facebook': {
'SCOPE': ['email', 'publish_stream'],
'METHOD': 'js_sdk' # instead of 'oauth2'
}
}
并在我的html模板的body
标记中包含以下代码段
{% include "facebook/fbconnect.html" %}
我还在TEMPLATE_CONTEXT_PROCESSORS
添加了以下内容:
allauth.account.context_processors.account
allauth.socialaccount.context_processors.socialaccount
出于某种原因,这似乎还不够,因为facebook/fbconnect.html
中要替换的变量似乎都没有设置,导致它们被空字符串替换。此外,{% provider_login_url 'facebook' method='js_sdk' %}
生成的链接只是javascript:FB_login('')
,这显然是错误的。
我错过了什么?
答案 0 :(得分:3)
我刚刚发现了如何做到这一点。而不是做
{% include "facebook/fbconnect.html" %}
我应该做
{% providers_media_js %}