1. 点击3dm上的qq图标,浏览器跳转到,地址为:

https://graph.qq.com/oauth2.0/show ?which=Login &display=pc &response_type=code &client_id=310192173 &redirect_uri=http%3A%2F%2Fbbs.3dmgame.com%2Fconnect.php%3Fmod%3Dlogin%26op%3Dcallback%26referer%3Dforum.php &state=3f0e9fafcd1765a11b3cf568ecf618e1 &scope=get_user_info%2Cadd_share%2Cadd_t%2Cadd_pic_t%2Cget_repost_list

a. which和display是相关的业务参数
b. response_type表示授权类型,此处为授权码类型response_type=code

  1. 授权码(认证码)模式 (Authorization code) response_type=code
  2. 简化(隐形)模式 (Impilict) response_type=token
  3. 用户名密码模式 (Resource Owner Password Credential) grant_type=password
  4. 客户端模式 (Client Credential) grant_type=client_credential

c. client_id为3dm在qqOAuth2.0业务中的客户端Id,需要3dm在qq后台业务中申请的client_id=310192173,这样qq能获取到当前客户端身份
d. redirect_uri为OAuth2.0验证成功后前端需要跳转的地址http://bbs.3dmgame.com/connect.php?mod=login&op=callback&referer=forum.php
e. state为防止csrf攻击参数,需要3dm自己对其进行验证
f. score为业务参数,表示3dm需要获取哪几种业务授权

  1. qq登录成功后,跳转地址为

http://bbs.3dmgame.com/connect.php ?receive=yes &mod=login &op=callback &referer=forum.php &code=DC62BCBFD75CAC20E8C41EAFE3A2D65D &state=4b8408f6a7e4b9c0d47b462339076178
实际上是前面redirect_uri地址加上了另外的参数,OAuth2.0通用参数有
a. code即授权码(authorization_code),后面3dm可以运用code去qq交换访问令牌(access_token)
b. state防csrf参数,需要3dm自己进行验证

  1. 3dm拿到access_token后去qq交换访问令牌,此行为是服务器之间传输,前端是看不到的

链接 graph.qq.com/oauth2/get_token
参数 code=DC62BCBFD75CAC20E8C41EAFE3A2D65D&redirect_uri=https%3a%2f%2fbbs.3dmgame.com&client_id=310192173&grant_type=authorization_code&client_secret=******

a. grant_type为授权类型,此处为授权码类型
b. client_secret为3dm与qq约定的加密字符串

  1. qq会返回access_token信息给3dm,例如:
{
"access_token":"jj9gwvgk49gjvfdfg34ggbv",
"token_type":"Bearer",
"expireds_seconds":3600
}

3dm拿到access_toekn后与当前用户进行关联保存

    1. 当3dm需要去qq获取用户信息时,可以拿access_token与用户标识去请求qq,例如:
      链接 graph.qq.com/oauth2/get_user_info 参数

最新文章

  1. hortonworks2.5.3 install step log
  2. java 接口和抽象类的区别
  3. ui-router API
  4. @import导入外部样式表与link链入外部样式表的区别
  5. Linux磁盘管理之设备文件详解04
  6. ural 1073. Square Country
  7. 简约的单页应用引擎:sonnyJS
  8. 4-2.矩阵乘法的Strassen算法详解
  9. Linux企业级开发技术(2)——epoll企业级开发之epoll接口
  10. Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事
  11. bug--Unable to add window –token is not valid; is your activity running?
  12. spring 动态创建数据源
  13. [算法题] Add Two Numbers
  14. 关于 redis.properties配置文件及rule
  15. PeopleSoft进程卡在“已排队”状态诊断和解决
  16. some knowledge of language
  17. oracle中计算某月的天数
  18. go make切片中len() 和 cap() 的差别
  19. 【python】列表&&元组&&字典
  20. ztree树的递归

热门文章

  1. [转载]Ubuntu 使用Compiz配置炫酷3D桌面
  2. Avro介绍
  3. ng-核心特性(模型概念)
  4. Centos7 Python2 升级到Python3
  5. EntityManager的Clear方法的使用
  6. Spark学习之路 (八)SparkCore的调优之开发调优[转]
  7. 作业day2
  8. 没有胆量,有天赋也是白费。Without guts,talent is wasted.
  9. 关于f(x)
  10. 牛客寒假6-I 导航系统