如何在Django应用中实现Facebook登录?

43

我创建了一个Django应用程序,该应用程序具有登录功能。

是否有人能帮忙找到一种使用Facebook凭据进行登录的方法或指向一些实现此功能的教程?


这个OAuth 2.0 playground可以在几分钟内带你了解基础知识。 - djvg
5个回答

79

摘要:


django-all-access


django-all-access是一个可重用的应用程序,用于从OAuth 1.0和OAuth 2.0提供者(如Twitter和Facebook)进行用户注册和认证。

该项目旨在使创建自己的身份验证远程API工作流程变得容易。django-all-access将提供具有合理默认值的简单视图以及覆盖默认行为的挂钩。

这里有一个简单的演示应用程序运行在http://allaccess-mlavin.dotcloud.com/ 完整的应用程序源代码包含在存储库中。

django-allauth


综合的Django应用程序集,用于解决身份验证,注册,帐户管理以及第三方(社交)帐户身份验证等问题。

支持的工作流程

  • 本地和社交账户的注册
  • 将多个社交账户连接到本地账户
  • 断开社交账户--如果仅剩下本地账户,则需要设置密码
  • 可选的即时注册社交账户--无需提问
  • 电子邮件地址管理(多个电子邮件地址,设置主要电子邮件地址)
  • 忘记密码流程
  • 电子邮件地址验证流程

支持的提供者

  • Dropbox(OAuth)
  • Facebook(OAuth2和JS SDK)
  • Github
  • Google(OAuth2)
  • LinkedIn
  • OpenId
  • Persona
  • SoundCloud(OAuth2)
  • Stack Exchange(OAuth2)
  • Twitch(OAuth2)
  • Twitter
  • Weibo(OAuth2)

Django Social Auth


Django Social Auth是为Django项目设置社交身份验证/授权机制的简便方法。

这个项目使用了来自django-twitter-oauthdjango-openid-auth的基础代码,实现了一个通用接口,用于定义第三方身份验证提供者。

支持的提供者

  • Google OpenID
  • Google OAuth
  • Google OAuth2
  • Yahoo OpenID
  • 类似myOpenID的OpenId
  • Twitter OAuth
  • Facebook OAuth

Django-Socialauth


功能

  1. 允许通过各种提供者登录。
  2. 从各种第三方网站导入联系人,以查找哪些朋友已经在我们的服务中使用。

登录

这是一个应用程序,用于启用通过各种第三方网站进行身份验证。特别是它允许通过以下方式进行登录:

  • Twitter
  • Gmail
  • Facebook
  • Yahoo(本质上是OpenID)
  • OpenId

oauth2app


oauth2app模块帮助Django网站运营者提供OAuth 2.0接口。该模块被注册为一个应用程序。

django-oauth


这是David Larlet的django-oauth的分支版本。

一个非常重要的区别在于,该版本要求您在Django缓存框架后面运行一个真正的缓存。

django-oauth-access


支持的提供者

  • Twitter
  • LinkedIn
  • Yahoo
  • Facebook(使用OAuth 2.0 - 功能正常,但需要更多工作)
  • 可能支持任何OAuth 1.0a兼容网站
  • django-oauth-consumer


    这是一个Django应用程序,为消费OAuth服务提供基础架构。它不用于提供OAuth服务。


    其他有用的链接:


    1
    django-social-auth现已迁移到python-social-auth。我非常喜欢这个项目,但很遗憾它在Django和Google App Engine上无法工作。 - vault
    @vault 通过其自己的apps.django_app包来实现。 - Alireza Savand
    谢谢您提供的信息,但我目前对测试它没有更多兴趣。只是为了明确,我已经阅读过它支持Google应用引擎身份验证,但我的意思是它在Google应用引擎上不起作用。也许现在它可以工作 :) - vault

    18
    我强烈推荐使用 django-social-auth。该 README 很详细,还包括了其他 OAuth 提供程序(如 Twitter)和 OpenID 提供程序(如 Google 和 Yahoo)的身份验证信息。当然,如果你只想使用 Facebook 身份验证,你也可以单独使用它。此外,还有一个示例应用程序,可提供一些样例代码帮助您体验。

    5
    django-social-auth现已被弃用。它的继承者是https://github.com/omab/python-social-auth。 - devsnd

    9

    对于移动应用程序,如果您正在使用Django开发iOS / Android应用程序,则可以使用Facebook iOS / Android API在前端登录Facebook。但这不是您应用程序的最终登录方式。在Facebook登录后,Facebook会给您一个访问令牌(access token),然后您可以将其与您的Facebook用户名/电子邮件一起发送到Django后端。在后端,Django可以使用类似于Facebook Python SDK的东西通过与Facebook通信来验证用户名-访问令牌匹配情况。如果验证成功,则最终可以为应用程序的用户登录。

    使用Python SDK很容易,只需阅读教程即可在几秒钟内与Facebook进行通信。


    你能展示一下它的后端实现或者给我一个链接吗?我正在我的Web应用上进行Facebook和Google登录,现在我想要在Android上实现它。 - Shubham Aggarwal

    1

    1
    新的方法是使用python-social-auth,因为django-social-auth已经被弃用,而python-social-auth现在支持其他框架,如Flask、Pyramid、Web.py和Tornado
    它还支持其他主要的认证提供者,如Microsoft、Google、Twitter、Amazon、GitHub等等
    以下是在Django上配置它的快速入门方式: 如何使用Google+ API登录Django?

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接