0

我想通过 twitter、facebook、openid、yahoo、google 使用单个应用程序登录。

所以我选择 django-socialauth

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

但是当我下载代码并运行它时,我找不到 facebook 按钮,

我能做些什么 ?

谢谢

这是我的演示图像:

替代文字

这是作者的演示:这里

替代文字

4

1 回答 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。

于 2010-12-23T08:53:10.797 回答