Unity3d_qq互联共享_Oauth2.0


目录[隐藏]
1. 为什么要升级到OAuth2.0协议
由于OAuth 1.0协议体系本身存在一些问题,现已被各大开发平台逐渐废弃。现推荐各开发者将接口升级到OAuth 2.0,以保证更安全,高效的访问。

QQ互联开放平台新增API都只提供OAuth2.0的版本,建议开发者进行升级以享受更多的功能。


OAuth1.0停止服务时间
1. 2012年11月30日,所有OAuth1.0的“未审核应用”不予审核通过;
2. 2012年12月31日,禁止所有“QQ登录次数>10,000”的OAuth1.0网站和移动应用使用QQ登录;
3. 2013年3月初,禁止所有OAuth1.0网站和移动应用使用QQ登录,具体时间请关注QQ互联官网官方微博; 

2. 如何升级到OAuth2.0协议第一步:实现OAuth2.0协议的授权流程
请参考文档 OAuth2.0的处理流程。强烈建议使用 server-side模式调用。

第二步:升级OAuth1.0的用户为OAuth2.0的用户
1. 在数据库中同时记录OAuth1.0与OAuth2.0的Token信息
实现OAuth2.0协议后,由于通过OAuth2.0获得的Access Token与通过OAuth 1.0获得的OAuth Token互不兼容,两者不能混用。因此建议开发者将OAuth1.0与OAuth2.0的Token信息分别存储。例如可采用如下的数据库表格存储用户信息:
UserID TX_OpenID TX_OAuth_Token TX_Access_Token
Tom1998 1704************************878C OAuth1.0的Token OAuth2.0的Token

2. 升级OAuth1.0的用户
由于以后QQ互联开放平台新增API都只提供OAuth2.0的版本。因此建议开发者将所有OAuth1.0用户升级到OAuth2.0用户。
升级方法很简单,只需要将用户的OAuth Token更换为Access Token即可。
腾讯提供了Access Token的更换接口,接口调用方法如下:

请求方法
GET

请求参数
请求参数请包含如下内容:
参数 是否必须 含义
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格式数据。。

返回说明
参数 说明
ret 错误码
msg 错误信息
openid 用户对应的openid
token 生成的oauth 2.0的access_token
expire access_token的过期时长,以秒为单位

请求示例
http://openapi.qzone.qq.com/user/get_oauth2_token? oauth_consumer_key=100085&oauth_token=DKJFDKHNKVHHKDNX&oauth_nonce=34887553&
oauth_timestamp=1354181193&oauth_version=1.0&oauth_signature_method=HMAC-SHA1&oauth_signature=D890CA0909909C0888&
openid=HXMDKKKIKKNNVKKDXXiDVV&format=json


正确返回示例
{
"ret":0
"openid":"1704************************878C",
"token":"88VD*************KHHH",
"expire":"7776000"
}


错误返回示例
{
ret: 41002,
msg: "请求包错误"
}


错误码说明
请参考 公共返回码说明

3. 常见问题3.1 OAuth 2.0需要申请吗?
OAuth 2.0不需要申请,所有注册的应用都可以正常调用。
3.2 在实现OAuth2.0协议时应该注意什么?
建议使用QQ互联提供的 SDK。如果没有合适的语言版本,请注意 server-side模式的Step1中的state参数的处理:
1.在发起授权流程生成state参数时,要保证随机生成,并且尽量避免重复。例如:state= MD5(时间戳+当前帐号)。
2.生成后要和当前登录的用户进行绑定。这里建议两种实现方式:
1)把state放在用户的cookie中;
2)把state放在该用户在服务端的session里。
3.在Step1请求Authorization Code时必须传递state参数。
4.腾讯服务器在响应Step1的请求后,将重定向到开发者的服务器。此时开发者的服务器应检测state参数是否一致(即cookie或session里的state)。如果不一致,开发者的服务器应该拒绝此请求,并且不再发起换取access_token的请求。如果一致,则流程正常运行。

强烈建议开发者实现以上过程,以防止CSRF攻击。
3.3 升级到OAuth 2.0后原有的API还可以使用吗?
所有接口依然可以调用,但OAuth 相关的参数需要按照OAuth 2.0协议传递。并且所有接口必须以https的方式调用。具体请参考 调用说明
3.4 access_token过期后怎么处理?
access_token过期调用接口时,平台会返回错误码为100014的错误,此时需要引导用户重新进行授权。建议在每次获得用户授权时保存过期时间,在每次调用接口前判断用户access_token是否过期。
token过期时间为3个月。如果存储的access token过期,请重新走登录流程, 使用Authentication_Code 获取新的access token值


如果有任何疑问请联系企业QQ:800030681。 
更多OAuth2.0相关文档:
http://wiki.opensns.qq.com/wiki/ ... 1%E6%96%87%E6%A1%A3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值