QQ登录 OAuth1.0升级到OAuth2.0流程讲解[注意事项]

作者: unvs 分类: OAuth 发布时间: 2012-12-06 11:46 ė110,079 views 6没有评论

今天一大早收到 QQ互联平台的邮件:【QQ互联重要升级】请各位开发者及时升级到OAuth2.0,仔细一看,是关于将陆续停止使用OAuth1.0协议开发接口。其实,这也是早可预料的,先有淘宝、新浪,都已关闭或流量小的使用OAuth1.0协议认证登录的站点。

博主这里简单说下OAuth1.0的弊端:1、协议认证体系,本来就存在一些问题,不够完善,而OAuth2.0很好的做到了这点;2、因第1点,涉及到认证登录过程间存在安全性;3、了解两种协议的人,知道OAuth1.0 Token保存的时间比较长,而最新的2.0限制了时间,更好的保证账号信息的安全;4、OAuth2.0认证体系的完善,较OAuth1.0的认证流程更加简化,效率、性能上都有所提高。众而观之,使用OAuth2.0协议认证是最好的。

QQ互联,对使用OAuth1.0停止的时间,如下:
1. 2012年11月30日,所有OAuth1.0的“未审核应用”不予审核通过。(博主的OAuth演示站:点击进入,有一个通过1.0认证应用,刚测试了下,仍可使用)
2. 2012年12月31日,禁止所有“QQ登录次数>10,000”的OAuth1.0网站和移动应用使用QQ登录。
3. 2013年3月初,禁止所有OAuth1.0网站和移动应用使用QQ登录。

下面,着重引用QQ平台官方的升级说明文档,讲解下OAuth1.0升级至OAuth2.0的原理及流程。

一、OAuth1.0升级到2.0的原理
1、OAuth1.0的机制原理中,第三步会生成一个Access Token给你,让你通过此及其它参数来请求用户信息,而OAuth2.0协议认证过程中,第二步同样会生成Access Token,但这两个token是不一样的,互不兼容!
2、最大的需要调整的恐怕就是,将OAuth1.0认证流程改为2.0的,详细参考官方文档(点击进入)或在博主OAuth专栏下载Demo实例;
3、认证体系升级前,还是需要将原先的OAuth1.0用户升级到OAuth2.0用户才可以,比如下列信息需要获取到:openid(用户唯一标识ID)、token(信息令牌)、expire(过期时间),QQ互联同时提供了用户升级接口,后面部分就是简要讲解下升级接口的调用与处理。

二、OAuth1.0升级到2.0接口讲解
1、升级主要更换Access Token,接口请求地址:http://openapi.qzone.qq.com/user/get_oauth2_token
2、请求方式:GET
3、请求参数:

参数 是否必须 含义
oauth_consumer_key 必须 申请QQ登录成功后,分配给网站的appid。
oauth_token 必须 具有用户数据访问权限的OAuth 1.0的OAuth Token。
oauth_nonce 必须 随机字符串,int型。
oauth_timestamp 必须 unix时间戳(UTC时间从1970年1月1日00:00:00到当前时刻的秒数)。注意开发者的服务器时间与腾讯服务器时间相差不能超过5分钟
oauth_version 必须 版本号,请固定使用1.0。
oauth_signature_method 必须 签名方法,请固定使用HMAC-SHA1。
oauth_signature 必须 签名值,用来提高传输过程参数的防篡改性。签名值的生成详见【QQ登录】签名参数oauth_signature的说明
openid 必须 与用户的QQ号一一对应的openid。
oauth_client_ip 可选 用户的IP地址。
format 可选 定义API返回的数据格式。取值说明:为xml时表示返回的格式是xml;为json时表示返回的格式是json。注意:json、xml为小写,否则将不识别。format不传或非xml,则返回json格式数据。。

4、返回参数:

参数 说明
ret 错误码(Code错误码说明见:OAuth_QQ登录_公共返回码说明
msg 错误信息
openid 用户对应的openid
token 生成的oauth 2.0的access_token
expire access_token的过期时长,以秒为单位

5、请求示例:
http://openapi.qzone.qq.com/user/get_oauth2_token?oauth_consumer_key=100226757
&oauth_token=DKJFDKHNKVHHKDNX
&oauth_nonce=34885553
&oauth_timestamp=1354191193
&oauth_version=1.0
&oauth_signature_method=HMAC-SHA1
&oauth_signature=D890CA0909909C0777
&openid=FFFDKKKIKKNNVKKDXXiDVV
&format=json

6、注意事项:
a、oauth_consumer_key在oauth1.0、2.0里是同一个,并且OAuth2.0接口不需重新申请;
b、所有以前的OAuth1.0接口,大部分2.0里仍然可以调用;
c、暂且就是这些,以后有注意的地方再续。

本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:QQ登录 OAuth1.0升级到OAuth2.0流程讲解[注意事项]

发表评论

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

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部