我想让我的网站访问者使用他们的谷歌帐户登录,而不是必须注册和创建一个新的。在
几件事:
我试图研究python openid库+google联合登录API,但是我迷路了。将会话作为实例来理解,但不理解作为请求关闭的会话。我无法理解看似简单却又如此复杂的事情。在纯python或django中,真的没有一个循序渐进的教程吗?在
我试着看看例子/消费者.py在python openid中,但是它还是有500行代码我不明白。在
我也不明白如何验证用户对谷歌帐户的每一个请求,我的网站。googleapi只解释初始登录步骤。如果我的网站的每个请求都必须通过google服务器进行验证,会发生什么情况?在
我认为您的问题源于对OpenID和/或OAuth如何工作的基本误解。在
看起来您只需要身份验证,所以现在让我们继续使用OpenID。查看现有库是正确的。如果只需要openid而不需要OAuth,并且没有使用Django的内置auth框架,那么python openid就是一个可以使用的工具。在
使用OpenID和OAuth进行联合登录的完整文档如下:http://code.google.com/apis/accounts/docs/OpenID.html。特别是,查看“交互序列”下的图表。在
首先,以下是Facebook Tornado web服务器的auth模块的一个非常好的工作示例:
https://github.com/facebook/tornado/blob/master/tornado/auth.py (grep那是“GoogleHandler”的意思。我用得很成功。) 这是独立于Django和Django auth的,应该给您一个很好的例子来说明如何实现您想要的。如果还不够,继续读。。。在
你说django openid无关紧要,但实际上它演示了一个完全符合您需要的实现,但是对于django的auth系统,而不是您的系统。实际上,您应该看看类似的插件Django-SocialAuth,它为一些不同的提供商(Google、Facebook、Twitter等)实现OpenID+OAuth。尤其要注意:
https://github.com/agiliq/Django-Socialauth/blob/master/socialauth/lib/oauthgoogle.py 和 https://github.com/agiliq/Django-Socialauth/tree/master/openid_consumer 和 https://github.com/agiliq/Django-Socialauth/tree/master/example_project
…对于一个使用django的auth框架的完整工作示例,可以根据您的自定义auth框架进行调整。在
祝你好运。我鼓励你记录下对你有用的东西,并为像你这样的人建立一个循序渐进的指南。在
我已经设法解决了这个问题,所以这里是解决方案,我希望其他人能从中受益: 1) 谷歌帐户验证不是针对谷歌帐户服务器对你的应用程序的每一个请求。例如: 1.1用户使用gmail帐户登录到你的应用程序 1.2用户还可以导航到gmail.com网站他们检查电子邮件的地方 1.3他们从gmail注销 1.4他们仍然登录到您的应用程序中,并且可以完全使用它 这意味着你必须在你的终端上处理会话到期问题,而Google帐户不负责它。在
2)我使用的Python核心代码如下:
3)我在上面创建并导入了一个附加的lib(myapp.common.util.openid)是一些现有的Django openid库的合并,因此向这些人致敬:
^{pr2}$4)以及保存google帐户会话标识符和已验证端点所需的模型:
祝你好运! 韩国
相关问题 更多 >
编程相关推荐