找不到使用django-socialauth的Facebook按钮
我想通过一个应用程序登录Twitter、Facebook、OpenID、Yahoo和Google。
所以我选择了django-socialauth这个工具。
我看了这篇文章:django-socialauth-login-via-twitter-facebook-openid-yahoo-google/
但是当我下载代码并运行时,我找不到Facebook的登录按钮。
我该怎么办呢?
谢谢!
这是我的演示图片:
这是作者的演示:在这里
1 个回答
0
我需要稍微调整一下他们的视图代码,才能让这个功能正常工作。在socialauth.views里,我们可以看到我们从设置文件中获取了一个叫FACEBOOK_APP_ID的属性。这是好的。
再看看socialauth/login_page.html这个模板,有一部分是:
{% if FACEBOOK_APP_ID %}
<div id="facebook">
<p><fb:login-button perms="{{ login_button_perms }}"></fb:login-button></p>
</div>
{% endif %}
现在,这部分似乎在访问变量FACEBOOK_APP_ID。当然,我们在socialauth.views里得到了这个属性。不过,我们遇到了一个问题。我们从来没有把这个变量传递给模板(这需要手动完成,记住了吗?)。所以,我们需要把旧的login_page视图替换成:
def login_page(request):
return render_to_response('socialauth/login_page.html',
{'next': request.GET.get('next', LOGIN_REDIRECT_URL)},
context_instance=RequestContext(request))
变成:
def login_page(request):
return render_to_response('socialauth/login_page.html', {
'next': request.GET.get('next', LOGIN_REDIRECT_URL),
'FACEBOOK_APP_ID': FACEBOOK_APP_ID,
},
context_instance=RequestContext(request))
注意,唯一的区别在于这一行 'FACEBOOK_APP_ID': FACEBOOK_APP_ID。