第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
2016-06-22 14:51
316 查看
为了让网站更快接入,腾讯提供了JS SDK的接入方案,具体点击这里或者点击这里进行查看。
不过也可以自己写代码,当然你需要了解QQ的OAuth2.0的处理流程(Web Server Flow)。
OAuth2.0的处理流程:点击这里查看官方Wiki。
1.授权:获取授权码Authorization Code
说明:第一步QQ必须得到要登录系统的授权信息,如果授权全成功,则会跳转到回调地址,同时授权码以参数形式,追加回调地址上。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/f534d3824d3bf8d369aac999c8efa625)
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/2c6fbeec82114fa99c7bebd7bcba16dc/clipboard.png)
当然还有一些其他参数,具体详情看官方介绍。
实例:
https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101137684&redirect_uri=http%3a%2f%2fmfxuan.free.800m.net%2flogin.jsp&state=1&scope=get_user_info,get_info
返回:
http://mfxuan.free.800m.net/login.jsp?code=xxxx12BBB0345xxxxxx68196E5C2xxxx&state=1
2. 登录:通过Authorization Code获取Access Token
说明:获取网址中的code值,这个就是Authorization Code,通过它,可以获取访问令牌。这个访问令牌,事实上是给登录系统用的,主要是允许访问QQ的授权服务。(注意:不要向别人泄漏Access Token,因为它有3个月时效)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/ae3860d58c8b00e751c7f822e2ac1aa1)
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/6e602bc611c9454ca46d418e78f3c522/clipboard.png)
详细请看官方介绍
实例:
https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=101137684&client_secret=xxxxx24b9da14xxxxxc2997xxxxxxxxx&code=xxxx12BBB0345xxxxxx68196E5C2xxxx&redirect_uri=http%3a%2f%2fmfxuan.free.800m.net%2flogin.jsp
返回:
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/9d219ec69c0f401dae08134b82217f55/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/a144e2085773663693dcfc17d5841a4f)
3. 获取用户openid
说明:先说一下openid,它是此网站上或应用中唯一对应用户身份的标识,与QQ号一一对应。网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在网站上或应用中的原有账号进行绑定。有了它以后就可以确定当前登录的QQ,获取到QQ登录用户的基本信息了。(注意:不要向别人泄漏OpenID)
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/5552b0a7a9ba4a0599003579dd29fc99/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/596f007713700c1ea53f64fa1ade6197)
实例:
https://graph.qq.com/oauth2.0/me?access_token=11111111111111111111111111111111
返回:
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/81b0f7208461424184cf8c2fdeb4d952/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/90378804ca12ba413b79e5d9ec48fb9a)
4. 调用OpenAPI获取各种信息
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/3f0eaeeca730499f9cc25e6c51139192/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/f3df760cb23faad639b786499d281252)
点击API列表。里面有每个API的使用说明。当然前提是你的应用或网站有这个api的授权信息才可以。点击“应用管理”中的“API管理”,可以看到所有已授权和未授权的API。
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/6cd050185d314e74b538f8f3df470633/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/d9b2fed61796d78aa89b6ed4a7343240)
作为演示,我这里选择的是获取用户信息api:get_user_info
实例:
https://graph.qq.com/user/get_user_info?access_token=11111111111111111111111111111111&oauth_consumer_key=101137684&openid=333333333333333333333333333
返回
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/12/033aa87daee583569b6690357ff631db)
【转自 http://blog.csdn.net/xiaoxian8023 】
不过也可以自己写代码,当然你需要了解QQ的OAuth2.0的处理流程(Web Server Flow)。
OAuth2.0的处理流程:点击这里查看官方Wiki。
1.授权:获取授权码Authorization Code
说明:第一步QQ必须得到要登录系统的授权信息,如果授权全成功,则会跳转到回调地址,同时授权码以参数形式,追加回调地址上。
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/2c6fbeec82114fa99c7bebd7bcba16dc/clipboard.png)
当然还有一些其他参数,具体详情看官方介绍。
实例:
https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101137684&redirect_uri=http%3a%2f%2fmfxuan.free.800m.net%2flogin.jsp&state=1&scope=get_user_info,get_info
返回:
http://mfxuan.free.800m.net/login.jsp?code=xxxx12BBB0345xxxxxx68196E5C2xxxx&state=1
2. 登录:通过Authorization Code获取Access Token
说明:获取网址中的code值,这个就是Authorization Code,通过它,可以获取访问令牌。这个访问令牌,事实上是给登录系统用的,主要是允许访问QQ的授权服务。(注意:不要向别人泄漏Access Token,因为它有3个月时效)
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/6e602bc611c9454ca46d418e78f3c522/clipboard.png)
详细请看官方介绍
实例:
https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=101137684&client_secret=xxxxx24b9da14xxxxxc2997xxxxxxxxx&code=xxxx12BBB0345xxxxxx68196E5C2xxxx&redirect_uri=http%3a%2f%2fmfxuan.free.800m.net%2flogin.jsp
返回:
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/9d219ec69c0f401dae08134b82217f55/clipboard.png)
3. 获取用户openid
说明:先说一下openid,它是此网站上或应用中唯一对应用户身份的标识,与QQ号一一对应。网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在网站上或应用中的原有账号进行绑定。有了它以后就可以确定当前登录的QQ,获取到QQ登录用户的基本信息了。(注意:不要向别人泄漏OpenID)
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/5552b0a7a9ba4a0599003579dd29fc99/clipboard.png)
实例:
https://graph.qq.com/oauth2.0/me?access_token=11111111111111111111111111111111
返回:
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/81b0f7208461424184cf8c2fdeb4d952/clipboard.png)
4. 调用OpenAPI获取各种信息
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/3f0eaeeca730499f9cc25e6c51139192/clipboard.png)
点击API列表。里面有每个API的使用说明。当然前提是你的应用或网站有这个api的授权信息才可以。点击“应用管理”中的“API管理”,可以看到所有已授权和未授权的API。
![](http://blog.csdn.net/wh_forever/article/details/file:/T:/YNoteData/xiaoxian100@163.com/xiaoxian100@163.com/6cd050185d314e74b538f8f3df470633/clipboard.png)
作为演示,我这里选择的是获取用户信息api:get_user_info
实例:
https://graph.qq.com/user/get_user_info?access_token=11111111111111111111111111111111&oauth_consumer_key=101137684&openid=333333333333333333333333333
返回
【转自 http://blog.csdn.net/xiaoxian8023 】
相关文章推荐
- 带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
- Oracle 和 SqlServer 的区别
- 北大poj-1011
- nginx+fastcgi php 使用file_get_contents、curl、fopen读取localhost本站点.php异常的情况
- 非常规数据恢复的几种场景(利用ODU恢复被drop purge的表)
- wbemtest.exe 远程连接
- 写在前面
- 总结3个我认为比较好的算法
- 迁移学习( Transfer Learning )
- Android入门_Activity生命周期
- Mac下配置Docker Kitematic使用Proxy加速镜像下载Swift Kitura镜像
- sql连接又一篇
- 前端开发面试题(一)
- 杭电OJ u Calculate e
- Spring10种常见异常解决方法
- 高德SERVICE_NO_RESPONSE解决方案
- Bayes估计
- 【转载】Java 对象之死
- s 4000 truts2的校验
- yum安裝的包如何保留到本地