python - Django + Google 联合登录

标签 python django openid single-sign-on

我想让我网站的访问者能够使用他们的 Google 帐户登录,而不必注册并创建一个新帐户。

一些事情:

  • 我没有使用 Django 身份验证框架,而是自己进行身份验证并将有关用户的信息保存在我自己的一组表中
  • 因此,各种 django-openid 库都不适用,因为它们都假定使用标准的 Django 身份验证框架。

我试图研究 python-openid 库 + 谷歌联合登录 API,但我迷路了。我尽可能了解实例化 Consumer 类,但不了解所需的 session 和存储参数。我无法理解看似如此简单的事情会如此复杂。真的没有关于如何在纯 python 或 django 中执行此操作的分步教程吗?

我试图查看 python-openid 中的 examples/consumer.py,但它又是 500 行代码,我不明白。

我也不明白如何根据谷歌帐户对我网站的每个请求进行用户验证。 Google API 仅说明初始登录步骤。在必须针对 Google 服务器验证身份验证的情况下,对我网站的每个请求都会发生什么情况?

最佳答案

我认为您的问题源于对 OpenID 和/或 OAuth 工作方式的基本误解。

看起来您只需要身份验证,所以让我们暂时使用 OpenID。查看现有库是正确的。如果您只需要 OpenID 而不需要 OAuth,并且您没有使用 Django 的内置身份验证框架,则可以使用 python-openid。

使用 OpenID 和 OAuth 进行联合登录的完整文档位于此处:http://code.google.com/apis/accounts/docs/OpenID.html .特别是,请查看“交互顺序”下的图表。

首先,这是来自 Facebook 的 Tornado 网络服务器的 auth 模块的一个非常好的工作示例:

https://github.com/facebook/tornado/blob/master/tornado/auth.py (grep 为“GoogleHandler”。我用它取得了巨大的成功。) 这独立于 Django 和 Django auth,应该给你一个很好的例子来说明如何实现你想要的。如果这还不够,请继续阅读...

你说 django-openid 是无关紧要的,但事实上它演示了你想要的实现,但用于 Django 的身份验证系统而不是你的。其实,你应该看看类似的插件,Django-SocialAuth ,它为一些不同的提供商(Google、Facebook、Twitter 等)实现了 OpenID + OAuth。特别是,请看:

https://github.com/agiliq/Django-Socialauth/blob/master/socialauth/lib/oauthgoogle.pyhttps://github.com/agiliq/Django-Socialauth/tree/master/openid_consumerhttps://github.com/agiliq/Django-Socialauth/tree/master/example_project

...有关使用 django 的身份验证框架的完整工作示例,并且可以适应您的自定义身份验证框架。

祝你好运。我鼓励您记录任何最终对您有用的内容,并为像您这样的其他人构建一个循序渐进的指南。

关于python - Django + Google 联合登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307677/

相关文章:

python - 使用堆栈名称标记 ec2 实例

python - 使用 numpy.savetxt 导出数组时在每行前添加注释

python - EmailMultiAlternatives 的 Celery 错误

ruby-on-rails - 带 Rails 的单用户 OpenID 服务器

python - 在 Postgresql 中使用 uuid.uuid4() 或 secrets.token_urlsafe() 难以猜测 url 和快速选择?

django - 如何更改 Django 显示验证期间创建的错误消息的方式?

python - django 模板中 "none"的等价物是什么?

python - Django 双向 ManyToMany - 如何防止在第二个模型上创建表?

asp.net-mvc-3 - 谷歌 OpenId : Accept only users of a particular company

asp.net-mvc - DotNetOpenAuth - 当依赖方是受信任站点时 OpenId 登录重定向挂起