今天看了下开源中国的第三方登录和绑定开源中国帐户的流程,请问是如何做到的?
最好能有稍微详细点的流程。
ps:
未登录开源中国时,点击微博登录,如果微博现在是登录状态,这种情况下,开源中国就直接是登录状态了,而且显示的是帐号名,是开源的号还是微博,还是进行判断的;这种情况下,难道就不需要密码吗,就直接是登录状态了,难道是使用了微博帐户用户信息的cookies吗, 这个cookies 如何跟开源中国联系起来的呢?
困惑中,还请站内高手帮忙解惑。。。。。。。
简单解释下:
第三方登陆是建立在信任的基础上的。以微博为例,微博账号密码可以用来登陆OSCHINA,但这个登陆过程还是在微博进行,在OSCHINA上点击微博登陆会跳到微博登陆页面(authorize)并传递一些参数(appid、appkey)过去告诉微博你是从OSCHINA过来的,登陆成功后微博会访问OSCHINA的一个URL(callback_url)并传递相关信息(access_token),通过它可以拿到一个可以唯一的确认用户身份的字段(uid),这时OSCHINA就会直接把此用户的状态更改为已登录而不需要用户名密码。
账号绑定时所要做的事情就是拿到前面说的可以唯一的确认用户身份的字段(一般是uid)并保存到数据库,这样用户在微博登陆完成后微博访问OSCHINA的callback_url时OSCHINA就可以通过它来确定要登陆的是哪个用户。
真实情况下的过程要比上面描述的复杂点,一般都是使用OpenID或OAuth2协议,新浪微博使用的是OAuth2。想了解具体细节,可以自己搜索相关资料,这部分资料还是挺多的。
OpenID是专门为第三方登陆开发的协议。而OAuth2则更强大些,不仅可以做第三方登陆,还可以用来做开放平台,控制开放API接口的使用。
OSCHINA的OpenID模块代码是已经开源了的,地址:http://www.oschina.net/code/snippet_12_13361
######回复 @tsl0922 : session啊,不错的选择,谢谢了 哈哈…………开心######回复 @孙德彪 : OSC目前是把一些用户不可修改的参数临时存到session中,用户可以修改的通过URL传到页面。token是带有效期的,所以不能存数据库,得每次登陆重新获取。具体实现可以看已开源的OpenID模块源码。######再次打扰你下。使用第三方帐户注册第一次登录的时候,会跳转到一个让用户填写os的email和用户信息的页面,添加成功后整个流程注册成功;请问跳转url里带的第三方帐户信息的参数,还有第三方的token等信息,你们是通过url传递过来的吗?这个事务的流程,能方便说下吗? 我现在的做法是将第三方的所有需要入库的参数都通过url传递过来的,也不知道还有没有其他办法来实现这个事务,谢谢######回复 @孙德彪 : 要设置最佳答案哦######明白了,很感谢###### @tsl0922######加个QQ登陆吧###### @红薯 谢谢######回复 @孙德彪 : 我在帮你呼叫他######红薯大哥, 需要@ 这个人,才能提问吗? 我在他的空间,没有找到答案呢######需要第三方的api..百度一下有很多。没什么技术含量的######回复 @钟晓骏 : 当然,一般用到第三方的东西,第三方都会有对应的api接口的。下载的接口,里面也有各种语言的示例。看看就会明白######api 这一层,我当然知道了, 就是困惑 问题中 ps 中的几个步骤,呵呵######与银行和支付宝那些支付的 做对接呢? 调用他们的接口吗?######开放平台的网站连接?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。