QQ互联 OAuth2.0 研究日志

今天研究了一下 QQ 的 OAuth2.0 接口,现在看来基本上是摸透了,因此有必要好好记录一下要点。

首先,需要去 QQ 互联 接入一个网站,我就把我的这个个人博客接入了。需要认证的,但是未认证成功之前,接口就已经是可以测试了的。


初心是什么

首先从目的上说一下,我们为什么要 OAuth?搞明白了这个问题,就基本上了解了这个协议的工作方式。

【用户说】我们进入一个需要注册的网站,点一下“用QQ登录”,然后我们不需要填写注册信息就直接成为注册用户了,省去了注册的步骤;

【服务商说】我们可以为用户提供最大的便利促使注册,能够快速获取用户并且抓取其信息。

OK,总结就是两点:凭证便利以及信息获取。

最终结果

那么我们从 OAuth 上面得到了什么来达成上述目的呢?

最终有两个:一个是 Access Token,另一个是用户的 Open ID。

有了 Open ID,我们就可以识别一个用户,相当于用户填写了它的登录名;而用户每次的登录授权都会生成一个 Access Token,这相当于是一个动态的密码验证。

More,从服务器端,我们拿到 Access Token 和本身持有的 AppID 和 AppSecret(此两者相当于服务商的用户名和密码),就可以查询该 Open ID 对应的用户信息,就可以自动帮用户填写信息注册了。

沟通的环节

为了达到上述目的,我们来叙述一下 OAuth 的一些关键环节。

  1. 打开一个验证弹窗,里面放置我们给的一个动态的 csrf_token(state),以及回调地址 redirecturi;
  2. 用户在弹窗进行授权,点击授权之后,OAuth 会将弹窗跳转到回调地址,然后带上原来的 csrf_token(state),以及一个动态生成的 code 串;
  3. 服务器端可以在 redirecturi 所在的页面获取这个 csrf_token,对一下暗号,没问题了就获取 code,附上自己的 AppID 和 AppSecret 去申请一个 Access Token;
  4. 注意 Access Token 是针对这一个用户的这一次授权的,其他的用户同时进行授权将对应到另一个 Access Token。 拿到 Access Token,第一时间查到这个授权用户的 Open ID;
  5. 如是,现在手上有 Access Token 和 Open ID,就可以为所欲为了。例如查一下妹子叫什么名称啊,帮她发一条微博啊,看一下她的微博有什么好友啊,把这些东西存起来啊,帮她注册一个号啊,什么都可以干了!

The Hard Way

使用这种没有经过接口封装的方式来使用 OAuth,与上面写到的步骤相当:

http://wiki.connect.qq.com/准备工作_OAuth2-0

反正顺势一个一个请求发就可以了,中间可以添加用户注册啊,记录 cookie 神马的,用这套方法可以得到最大的灵活性,当然也可以自己手动封装一下接口;

Lazy Man Method

最方便,最懒人的方法,直接调一个 QQ 封装的 js_sdk,然后一切通过 js 完成即可,反正一部把上面所有步骤都走完了,想干啥干啥,不过要干啥之前,都要用 js 在前端写。


That’s all 其实不难的。


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2014/11/qq-oauth20.html【QQ互联 OAuth2.0 研究日志】

发表评论

电子邮件地址不会被公开。 必填项已用*标注