腾讯微博OAuth2.0认证介绍

目录

腾讯微博OAuth2.0认证介绍

腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台。 php

广大开发者和用户登陆平台后,就可使用平台提供的开放API接口,建立应用从微博系统获取信息,或将新的信息传播到整个微博系统中,丰富多样的API接口和应用,加上您的智慧,将创造出无穷的应用和乐趣。 api

在使用腾讯微博平台提供的API前,您须要作如下两步工做: 浏览器

  1. 成为开发者,并申请appkey和appsecret
  2. 受权获取accesstoken

Accesstoken是第三方得到用户受权的凭证,是第三方访问api资源的票据。目前,腾讯微博采用Oauth2.0协议对第三方进行受权,相对Oauth1.0来讲,Oauth2.0具备更加简单和安全特色。 安全

关于Oauth2.0的详细介绍,请参考Oauth2.0协议标准
若是您须要使用Oauth1.0受权,请参考腾讯微博Oauth1.0受权协议服务器

获取accesstoken的两种方式

用户经过Oauth2.0受权第三方有两种方式: session

  1. Authorization code grant,适合于有server端的应用受权
  2. Implicit grant,适合于经过客户端访问的应用受权

Authorization cod模式和Implicit模式仅在受权的时候有所区别,后续调用API的方式是一致的。 app

1.Authorization code grant

使用场景:
Authorization code受权适用于PC,无线客户端等须要和第三方server进行交互的应用场景。使用Authorization code受权,第三方可以集中处理用户的受权请求和受权结果,适用于有server端的应用。 url

受权流程:
Authorization code受权模式分为两步,首先获取code,而后用code换取accesstoken。官方流程示意图: spa

oauth2_4.gif
交互图: oauth2_code.gif

第一步:请求code

请求方法:
GET .net

请求地址:

https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=APP_KEY&response_type=code&redirect_uri=http://www.myurl.com/example

请求参数:

字段 必须 说明
client_id true 申请应用时分配的app_key
redirect_uri true 受权回调地址,必须和应用注册的地址一致
response_type true 受权类型,为code
wap false 主要用于指定手机受权页的版本,无此参数默认显示pc受权页面

wap=1时,跳转到wap1.0的受权页
wap=2时,跳转到wap2.0的受权页
不带本参数时,手机访问默认跳到wap2.0的受权页

state false 用于保持请求和回调的状态,受权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式
forcelogin false 针对pc受权页
forcelogin=true,强制弹出登陆受权页面 forcelogin=false,用户已经登陆而且已经受权第三方应用,则再也不弹出受权页面
默认为forcelogin=true

返回结果:
若是受权成功,受权服务器会将用户的浏览器重定向到redirect_uri,并带上code,openid和openkey等参数,重定向的url以下:

http://www.myurl.com/example?code=CODE&openid=OPENID&openkey=OPENKEY

参数说明:

字段 说明
code 用来换取accesstoken的受权码,有效期为10分钟
openid 用户统一标识,能够惟一标识一个用户
openkey 与openid对应的用户key,是验证openid身份的验证密钥

第二步:请求accesstoken

请求地址:

https://open.t.qq.com/cgi-bin/oauth2/access_token?client_id=APP_KEY&client_secret=APP_SECRET&redirect_uri=http://www.myurl.com/example&grant_type=authorization_code&code=CODE

请求参数:

字段 必须 说明
client_id true 申请应用时分配的app_key
client_secret true 申请应用时分配的app_secret
grant_type true authorization_code
code true 调用authorize时返回的code
redirect_uri true 受权回调地址,必须和应用注册的地址一致
state false 用于保持请求和回调的状态,受权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式

返回结果:

access_token=ACCESS_TOKEN&expires_in=60&refresh_token=REFRESH_TOKEN

参数说明:

字段 说明
access_token 访问第三方资源的凭证
expires_in accesstoken过时时间,以返回的时间的准,单位为秒,注意过时时提醒用户从新受权
refresh_token 刷新token

2.Implicit grant

使用场景:
Implicit grant受权适用于没有server端的客户端应用,由客户端发起受权请求,保存和处理accesstoken。

受权流程:
官方流程示意图:

oauth2_6.gif

交互图:

oauth2_implict.gif

请求地址:

https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=APP_KEY&response_type=token&redirect_uri=http://www.myurl.com/example

请求参数:

字段 必须 说明
client_id true 申请应用时分配的app_key
redirect_uri true 受权回调地址,必须和应用注册的地址一致
response_type true 受权类型,为token
wap false 主要用于指定手机受权页的版本,无此参数默认显示pc受权页面

wap=1时,跳转到wap1.0的受权页
wap=2时,跳转到wap2.0的受权页
不带本参数时,手机访问默认跳到wap2.0的受权页

state false 用于保持请求和回调的状态,受权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式
forcelogin false 针对pc受权页
forcelogin=true,强制弹出登陆受权页面 forcelogin=false,用户已经登陆而且已经受权第三方应用,则再也不弹出受权页面
默认为forcelogin=true

返回结果:

http://www.myurl.com/example#access_token=ACCESS_TOKEN&expires_in=60&openid=OPENID&openkey=OPENKEY

参数说明:

字段 说明
access_token accesstoken,访问api资源的凭证
expires_in accesstoken过时时间,以系统返回的过时时间为准,注意过时时提醒用户从新受权
openid 用户统一标识,能够惟一标识一个用户
openkey 与openid对应的用户key,是验证openid身份的验证密钥

刷新accesstoken

Oauth2中,access_token的有效期不是无限的,当第三方应用使用的access_token时间超过了其生命周期时,能够经过刷新机制来获取新的access_token。

请求地址

https://open.t.qq.com/cgi-bin/oauth2/access_token?client_id=APP_KEY&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

请求参数

字段 必须 说明
client_id true 申请应用时分配的app_key
grant_type true 固定为“refresh_token”
refresh_token true 上次受权或者刷新时获取的refresh_token

返回结果

返回字符串:

access_token=ACCESS_TOKEN&expires_in=60&refresh_token=REFRESH_TOKEN&name=NAME

参数说明

字段 说明
access_token access_token,访问api资源的凭证
expires_in access_token过时时间,以系统返回的过时时间为准,注意过时时提醒用户从新受权
refresh_token 刷新token
name 受权用户微博账号

注:
经过刷新机制能够延长access_token有效期,每次刷新延长的access_token有效期与受权时access_token的有效期一致,屡次刷新可将access_token的有效期延长至一年。

访问API资源

请求方法

GET/POST

请求参数(公共部分)

https://open.t.qq.com/api/REQUEST_METHOD?oauth_consumer_key=APP_KEY&access_token=ACCESSTOKEN&openid=OPENID&clientip=CLIENTIP&oauth_version=2.a&scope=all

其中REQUEST_METHOD为须要请求的api接口,能够参考api资源列表
请求的参数中,Oauth部分需包含:

字段 说明
oauth_consumer_key appkey
access_token 受权得到的accesstoken
openid 受权获取的openid
clientip 客户端的ip
oauth_version 版本号,必须为2.a
scope 请求权限范围(默认“all”)

其余部分参数参考各api参数要求。

使用案例

  1. Authorization code受权案例
  2. Implicit受权案例

accesstoken过时时间

应用级别: accesstoken有效期
初级、高级及腾讯合做方应用,accesstoken有效期均为三个月

错误码说明

请参考错误码说明

相关文章
相关标签/搜索