这里的googleqqsinagithub等登录模块,是怎么实现的?
有没有相关PHP代码整合分享?谢谢~
回复内容:
这里的google\qq\sina\github等登录模块,是怎么实现的?
有没有相关PHP代码整合分享?谢谢~
这种借用第三方用户信息登录的本质还是需要在自己网站创建一个账号来登录,只不过这个账号相关信息(用户名等)是系统来创建。具体是实现是这样的:创建2张表,一张就是记录自己网站注册用户信息表,另外一个用来记录第三方登录成功返回的用户唯一标示符和用户信息表中的ID的对应关系:
userinfo表:userid,email,username,password;
partner表:userid,partner_userid,partner_type。
partner表中的userid字段与表userinfo中的userid字段对应,partner_userid
是第三方接口登录之后,第三方返回的用户ID,partner_type
是第三方类型(qq,gmail,github,weibo 等等)。
用户通过第三方登录成功之后,返回一个partner_id
给你的网站,你通过这个partner_id
和partner_type
到partner
表去查找是否存在记录,如果存在,则获取对应记录的userid
,通过这个userid
登录系统。如果不存在,则系统自动创建一个用户,将信息插入到userinfo
表,然后将userid
和partner_id
插入到表partner
.
其实我们使用的是标准的php oauth库实现的
这是oauth 1.0的扩展 http://pecl.php.net/package/oauth
这是oauth 2.0的库 http://code.google.com/p/oauth2-php/
具体用法参考文档和开放平台的文档即可
关键词:OpenID
推荐阅读
-
csdn论坛登录中下次自动登录功能是怎么实现的
-
thinkphp程序的插件机制原理一般是怎么实现的呢?如wordpress插件,DZ!插件等
-
论坛留言板是怎么实现非登录用户点击留言框弹出用户没有登录提示框的
-
自己的系统怎么整合配套论坛,实现同步注册登录注销等
-
csdn论坛登录中下次自动登录功能是怎么实现的
-
腾讯网页检测到您已登录QQ帐号是怎么实现的
-
Yii 登录的时候 “记住我” 是怎么实现的呢?
-
thinkphp程序的插件机制原理一般是怎么实现的呢?如wordpress插件,DZ!插件等
-
这里的googleqqsinagithub等登录模块,是怎么实现的?
-
javascript - codecademy,ideone.com/等在线测试js,php,ruby,python是怎么实现的?