本文说明的是依据某应用通过网页的qq信息来登录的过程。用途是利用QQ账号就能高速自己主动注冊并可以登录客户应用。

从webserver与腾讯server通信获取开房平台用户OpenID,再在应用server的平台server生成账号,在命名server生成角色ID。在Tokenserver生成Token,然后返回client。

client能够依据角色ID和Token请求登录。

1、客户应用的标识

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

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

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

应用webserver提供给腾讯server的回调地址(redirect_uri ):比方 http://www.kkalk.cn

2、webserver与腾讯server通信

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

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

https://graph.qq.com/oauth2.0/authorize?

response_type=token&client_id=101222571&redirect_uri=http://www.kkalk.cn





腾讯校验成功后会调用应用webserver的回调地址,地址里面包括client的訪问令牌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(腾讯server依据client应用为每一个用户提供一个唯一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、客户应用webserver与平台server、以及浏览器前端通信

client应用须要依据互联账号OpenID生成客户应用账号以其唯一ID

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

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

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

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

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

4、client账号登录

client依据角色ID以及登录Token请求登录,然后開始登录。參考  http://blog.csdn.net/chenjiayi_yun/article/details/46804369 (请求记password登陆)

QQ互联账号登录的更多相关文章

  1. Destoon QQ互联一键登录审核不通过的解决方案

    在QQ互联上申请帐号之后提交了审核, 后台填写APPID和KEY之后自己申请的QQ号可以正常登录,但QQ互联审核的时候一直审核不通过说是“您的网站审核未通过,原因是“点击QQ登录按钮提示登录失败或出现 ...

  2. 第三方账号登录--QQ登录,以及QQ微博账号登录

    在QQ登陆测试的时候,刚申请正常登陆,但是由于app未上线,或许是腾讯升级造成的个别时候QQ登陆无法成功会提示下图代码,功能上没啥问题,已经达到 测试效果了.附上腾讯错误代码图(大家测试QQ登陆的时候 ...

  3. android 集成QQ互联 (登录,分享)

    参考:http://blog.csdn.net/syz8742874/article/details/39271117 http://blog.csdn.net/woblog/article/deta ...

  4. QQ的账号登录及api操作

    .qq.php <?php /** * PHP Library for qq.com * * @author */ class qqPHP { function __construct($app ...

  5. QQ登录整合/oauth2.0认证-04-调整到QQ互联进行QQ登录

    ---------------------------------目录------------------------------------- QQ登录整合/oauth2.0认证-03-对第二节的代 ...

  6. QQ互联登录以及非官方正版应用报100044错误

    QQ第三方登录的时候,显示非官方正版应用,报100044错误:坑1:我们在QQ互联注册成功后需要设置包名和签名,签名是通过官方提供的工具生成的.注意一点:这里的签名是需要由打包签名之后APK生成,我们 ...

  7. QQ互联登录回调路径错误redirect uri is illegal(100010)

    QQ互联登录设置的路径设置

  8. QQ互联登录提示redirect uri is illegal(100010)完美解决方法

    大概2015年3月低,腾讯QQ互联开发平台调整了有关QQ登录应用回调地址填写规则,用来修复QQ登录过程因回调地址的漏洞可能导致存在的安全问题. 博主接触这块较多,但也是四月才了解此事,从4月起,所有新 ...

  9. QQ登录整合/oauth2.0认证-02-跳转到QQ互联页

    ---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...

随机推荐

  1. Android 输入框限制字符输入数

    有时候对Android的输入框有字符输入数量的限制,而且显示字符输入的数量.通过下面方式能够实现: 1.自己定义LimitNumEditText继承EditText import android.co ...

  2. bzoj1070: [SCOI2007]修车(费用流)

    1070: [SCOI2007]修车 题目:传送门 题解: 一道挺简单的费用流吧...胡乱建模走起 贴个代码... #include<cstdio> #include<cstring ...

  3. bzoj1055: [HAOI2008]玩具取名(dp)

    1055: [HAOI2008]玩具取名 题目:传送门 简要题意: 就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个. 题 ...

  4. Windows安装PHP MongoDB扩展

    本文将讲述一下在Wamp环境下安装MongoDB扩展的过程,大家可以略作参考 Linux 版本的可以参考之前发布的Linux安装PHP MongoDB扩展 安装环境 系统环境:Windows 7 64 ...

  5. SVN冲突的解决过程

    此文教程只是个人记录使用,不建议当教程!(估计新手也看得懵) 改完之后Ctrl+s保存就好.

  6. js中作用域链的问题

    为什么没有var声明的变量是全局的? 是因为,在js中,如果某个变量没有var声明,会自动到上一层作用域中去找这个变量的声明语句,如果找到,就使用,如果没有找到,继续向上查找,一直查找到全局作用域为止 ...

  7. PostgreSQL Replication之第四章 设置异步复制(5)

    4.5 使流复制更健壮 当连接到master时,slave要做的第一件事情是赶上master.但是,这会一直工作吗?我们已经看到,我们可以使用由基于流和基于文件组成的混合设置.这给了我们一些额外的安全 ...

  8. vue分页组件火狐中出现样式问题

    分页的操作到了火狐浏览器会样式 怎么解决? 其实就是将input的type属性变成了text,因为number属性会变成上下的小箭头

  9. MFC打包生成可安装文件

    一.问题来源: VS环境:编写的MFC程序即使静态联编之后,在客户机器上还是打不开.可能的原因是你开发的时候调用了第三方ActiveX控件.这时候就需要把自己的release版的发布软件和*.ocx控 ...

  10. Could not create connection to database server. Attempted reconnect 3 times. Giving up.错误

    项目是基于springboot框架,昨天从git上pull代码之后也没有具体看更改的地方,结果运行的时候就报错了. java.sql.SQLNonTransientConnectionExceptio ...