QQ互联账号登录

本文说明的是根据某应用通过网页的qq信息来登录的过程。用途是利用QQ账号就能快速自动注册并能够登录客户应用。

从web服务器与腾讯服务器通信获取开房平台用户OpenID,再在应用服务器的平台服务器生成账号,在命名服务器生成角色ID,在Token服务器生成Token,然后返回客户端。

客户端可以根据角色ID和Token请求登录。

1、客户应用的标识

在腾讯开放平台网站申请腾讯应用,批准之后可获得的客户应用的标识id:

如client_id、oauth_consumer_key的值都是应用的id(101222571)。

腾讯验证服务器的地址:https://graph.qq.com/oauth2.0/authorize?

应用web服务器提供给腾讯服务器的回调地址(redirect_uri ):比如 http://www.kkalk.cn

2、web服务器与腾讯服务器通信

(1)申请客户应用的用户的访问令牌

申请客户应用的访问令牌access_token

https://graph.qq.com/oauth2.0/authorize?response_type=token&client_id=101222571&redirect_uri=http://www.kkalk.cn


腾讯校验成功后会调用应用web服务器的回调地址,地址里面包含客户端的访问令牌access_token
http://www.kkalk.cn/?#access_token=4EB4F7CFD29AFB216FED819042D1B6F5&expires_in=7776000

其中:

通过用户验证登录和授权,获取Access Token,为下一步获取用户的OpenID做准备;
同时,Access Token是应用在调用OpenAPI访问和修改用户数据时必须传入的参数。
access token由每次用户登录时生成,过期时间默认为三个月,用户再次登录时自动刷新,请网站或应用做好防过期策略,或过期后提示用户再次授权。


(2)申请用户的openid

根据用户的access_token 申请用户的openid(腾讯服务器根据客户端应用为每个用户提供一个唯一id,是一个32字节16进制字符串)

https://graph.qq.com/oauth2.0/me?access_token=8F14187F81C3AA4160328873807A4F71

腾讯校验成功后,返回openid,openid为用户的分配唯一标识,以后不会改变
callback( {"client_id":"101222571","openid":"6A7F7C7C5F9D9FF02F41BAE31838C315"} ); 

其中:

通过输入在上一步获取的Access Token,得到对应用户身份的OpenID。
OpenID是此网站上或应用中唯一对应用户身份的标识,网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在网站上或应用中的原有账号进行绑定。


(3)获取腾讯用户信息

客户应用根据该用户的access_token,openid 可以获取腾讯用户的信息

https://graph.qq.com/user/get_user_info?access_token=8F14187F81C3AA4160328873807A4F71&oauth_consumer_key=101222571&openid=6A7F7C7C5F9D9FF02F41BAE31838C315


腾讯校验成功后,返回用户信息,例如:

{ "ret": 0, "msg": "", "is_lost":0, "nickname": "云", "gender": "男", "province": "上海", "city": "闵行", "year": "1987", "figureurl": "http:\/\/qzapp.qlogo.cn\/qzapp\/101222571\/6A7F7C7C5F9D9FF02F41BAE31838C315\/30", "figureurl_1": "http:\/\/qzapp.qlogo.cn\/qzapp\/101222571\/6A7F7C7C5F9D9FF02F41BAE31838C315\/50", "figureurl_2": "http:\/\/qzapp.qlogo.cn\/qzapp\/101222571\/6A7F7C7C5F9D9FF02F41BAE31838C315\/100", "figureurl_qq_1": "http:\/\/q.qlogo.cn\/qqapp\/101222571\/6A7F7C7C5F9D9FF02F41BAE31838C315\/40", "figureurl_qq_2": "http:\/\/q.qlogo.cn\/qqapp\/101222571\/6A7F7C7C5F9D9FF02F41BAE31838C315\/100", "is_yellow_vip": "0", "vip": "0", "yellow_vip_level": "0", "level": "0", "is_yellow_year_vip": "0" } 


3、客户应用web服务器与平台服务器、以及浏览器前端通信

客户端应用需要根据互联账号OpenID生成客户应用账号以其唯一ID

(1)返回客户应用的互联账户

客户应用的web服务器发送用户OpenID到平台服务器,账户命名为 _qq互联账号OpenID,检查该账户是否存在,不存在则生成,存在则返回该账户的登录信息到web服务器,进而返回给浏览器前端

(2)客户应用的互联账户的生成

平台服务器生成账号,并向命名服务器请求角色ID(没有则生成),再向Token服务器请求登录Token(没有则生成),然后连同登录信息返回web 服务器以及浏览器前端。

客户端检查到浏览器返回,则回调显示角色ID和登录Token。


4、客户端账号登录

客户端根据角色ID以及登录Token请求登录,然后开始登录。参考  http://blog.csdn.net/chenjiayi_yun/article/details/46804369 (请求记密码登陆)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值