找不到使用django-socialauth的Facebook按钮

0 投票
1 回答
629 浏览
提问于 2025-04-16 08:13

我想通过一个应用程序登录Twitter、Facebook、OpenID、Yahoo和Google。

所以我选择了django-socialauth这个工具。

我看了这篇文章:django-socialauth-login-via-twitter-facebook-openid-yahoo-google/

但是当我下载代码并运行时,我找不到Facebook的登录按钮。

我该怎么办呢?

谢谢!

这是我的演示图片:

alt text

这是作者的演示:在这里

alt text

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。

撰写回答