QQ登录 OAuth1.0升级到OAuth2.0流程讲解[注意事项]
今天一大早收到 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流程讲解[注意事项]