在Django应用程序中实现Facebook登录的简单而最新的方法

时间:2012-08-31 18:44:14

标签: django facebook facebook-javascript-sdk django-socialauth django-allauth

这个问题在stackoverflow中很常见,关于它有很多不同的问题和答案,但我找不到我需要的东西。

首先,我想准确定义我需要的内容:让用户使用他们的Facebook凭据登录我的应用程序的选项。该应用程序将保存匹配的经典Django用户。我只需要使用用户的个人资料图片,并确保每次相同的Facebook用户与匹配的Django用户相关。

不幸的是,由于以下原因,我觉得实施起来非常令人沮丧:

  1. 到目前为止,经过大量阅读后,我无法找到最适合此任务的软件包。
  2. 有些人推荐django-social-auth并称赞其功能和文档。就个人而言,我不明白为什么,因为它并不是专门针对Facebook而且没有关于客户端的解释,即Facebook登录按钮以及整个流程如何运作。
  3. 当你去Facebook开发人员时,你突然发现自己正在阅读一些神奇的javascript sdk,以及一个承诺,这就是你所需要的。然后你再次感到沮丧,无法理解客户端相关的sdk如何将用户注册到你的应用程序。
  4. 我知道开发人员会在他们的应用程序中以某种方式实现Facebook身份验证包,但我无法弄清楚如何做到这一点。

    如果有人能告诉我:在这个时间点,将Facebook身份验证添加到我的Django应用程序的最佳方法是什么?我还要求详细的文档/教程解释如何登录Facebook用户,从设置和配置级别到注册到Django应用程序和客户端代码。

3 个答案:

答案 0 :(得分:3)

有多种方法可以解决这个问题,“最佳”方式是什么主观方式。

主观上,您可以选择django-allauth。以下是一些可以帮助您入门的建议:

  • 如果您希望简化注册,请将SOCIALACCOUNT_AUTO_SIGNUP设置为True,以便实现“无问题”登录。用户只需批准FB对话框,他们就会立即登录您的网站。

  • 向模板添加登录按钮只需要:

    <a href="{% provider_login_url "facebook" %}">Sign In</a>

  • 该应用程序支持JS SDK登录(专业版:用户习惯于出现的典型FB弹出窗口),或者您可以使用自己的OAuth流程。无论你喜欢什么。

答案 1 :(得分:1)

了解FB的Oauth 2.0流程的最快方法是使用FB的Javascript SDK。一旦掌握了它,FB的PHP库就差不多了。此外,其他OAuth网站(如Google,Twitter或Dropbox)的实施几乎相同。

在婴儿步骤中:

  1. 了解如何将FB Javascript SDK安装到简单的网页

  2. 使用FB.login确定登录状态并获取登录网址。

  3. 最后,使用FB.Event.Subscribe并订阅auth.statusChange以检测登录/注销更改。

  4. 另外,很高兴查看https://developers.facebook.com/roadmap/即将删除的功能或功能。

答案 2 :(得分:0)

django-social-auth不仅适用于Facebook,但这并不意味着您应该使用所有可用的后端。

项目文档位于http://django-social-auth.readthedocs.org/en/latest/index.html,Facebook后端详细信息位于http://django-social-auth.readthedocs.org/en/latest/backends/facebook.html