由于QQ授权登录需要申请账号、以及需要提供外网的地址,备案号等等。「淘东项目」所以就不讲解QQ授权了,其它的授权登录都大同小异,下面来说说实现思路。
OAuth2.0其授权验证流程示意图如下(图片来源:OAuth2.0协议草案V21的4.1节 )
首先我们一QQ授权登录为例子,熟悉一下OAuth2.0的基本思路:
- 生成QQ联合登陆授权链接,会跳转到授权界面(如下图:): url:https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=申请后的clientId&redirect_uri=申请授权成功后跳转的url
- (腾讯)用户选择账号后,使用重定向方式跳转回调地址 http://跳转的url 传递一个code参数
- code作用授权码,使用code参数获取accessToken
- 使用accessToken获取用户信息(openid、头像、QQ年龄之类)
代码思路如下:
1.编写授权链接接口
2.编写授权回调接口
- 获取到授权码
- 使用授权码获取accessToken
- 使用accessToken获取用户openid
3.使用openid查询数据库user信息表中是否有关联
SELECT * FROM user where QQ_OPENID='4130A96EDE4187C8FD6BB055CC542B40';
- 如果使用openid能够查询用户信息,说明用户已经绑定成功,自动实现登陆
- 如果使用openid没有查询到用户信息的话,说明用户没有绑定账信息,跳转到关联账号页面
- 关联成功账号之后,将openid修改为对应的账号信息。
update user set QQ_OPENID ='4130A96EDE4187C8FD6BB055CC542B41' where USER_ID='111';
当然,腾讯已经封装好了SDK了,详细说明可以参考开发者文档:http://wiki.connect.qq.com/