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

广大开发者和用户登录平台后,就可以使用平台提供的开放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授权第三方有两种方式:

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

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

1.Authorization code grant

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

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

交互图: 

第一步:请求code

请求方法:
GET

请求地址:

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。

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

交互图:

请求地址:

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有效期均为三个月

错误码说明

请参考错误码说明

腾讯微博OAuth2.0认证介绍的更多相关文章

  1. OAuth2.0认证介绍

    OAuth2.0鉴权 返回 目录 [隐藏] 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.1.1 第 ...

  2. OAuth2.0学习(1-2)OAuth2.0的一个企业级应用场景 - 新浪开放平台微博OAuth2.0认证

    http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5 开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自 ...

  3. 腾讯微博OAuth2.0 .NET4.0 SDK 发布以及网站腾讯微博登陆示例代码(原创)

    1.使用简单方便,包含详细注释: 2.暂时只支持xml格式字符串的转换,建议接口使用xml参数:3.QweiboSDK.Controllers命名空间下已包含所有API接口:4.只需调用到Qweibo ...

  4. DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配

    DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成 ...

  5. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

            近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...

  6. OAuth2.0认证和授权以及单点登录

    https://www.cnblogs.com/shizhiyi/p/7754721.html OAuth2.0认证和授权机制讲解 2017-10-30 15:33 by shizhiyi, 2273 ...

  7. .Net WebApi 实现OAuth2.0认证

    现在多数公众平台提供的api都使用OAuth2.0认证模式,最近在搞Android方面的开发,身份认证和权限控制的各方面比较来说,使用OAuth认证的还是比较靠谱,OAuth2.0的协议可以参考htt ...

  8. Owin中间件搭建OAuth2.0认证授权服务体会

    继两篇转载的Owin搭建OAuth 2.0的文章,使用Owin中间件搭建OAuth2.0认证授权服务器和理解OAuth 2.0之后,我想把最近整理的资料做一下总结. 前两篇主要是介绍概念和一个基本的D ...

  9. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

随机推荐

  1. Git 安装与使用(一)

    一.简介 1.集中式版本控制系统(CVS):Svn     * 版本库是集中存放在中央服务器中的,客户端需要先从中央服务器取得最新的版本,然后再干活,活干完后,再把自己的代码推送给中央服务器.    ...

  2. Python3 IO

    在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中 ...

  3. 遍历 DataSet

    DataSet ds=new DataSet ; //获取dataset的第一张table,取其他table只须改下标 DataTable dt=ds.tables[]; //遍历行 foreach( ...

  4. 面试题(C#算法编程题)

    1>用C#写一段选择排序算法,要求用自己的编程风格.答:private int min;    public void xuanZhe(int[] list)//选择排序    {        ...

  5. PHP页面中文乱码分析

    php出现出现乱码的原因:页面文件的编码方式(.html,.php等).html.head中指定浏览器的编码方式.MySql数据库传输的编码方式.Apache字符集. PHP页面中文乱码出现的原因有几 ...

  6. MYSQL Error 2006HY000:MySQL server has gone away的解决方案

    MySQL server has gone away有几种情况. 1.应用程序(比如PHP)长时间的执行批量的MYSQL语句. 最常见的就是采集或者新旧数据转化. 解决方案: 在my.cnf文件中添加 ...

  7. PHP — 用PHP实现一个双向队列

    1.简介 deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构.双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行.双向队列(双端队列)就像是一个队 ...

  8. hdu 1251 统计难题 trie入门

    统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本 ...

  9. zoom 用法

    from: http://www.jb51.net/css/40285.html 其实Zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持.它可以设置或检索对象的缩放比例.除此之外,它还有 ...

  10. webView 加载本地文件 - html/htm pdf docx tx

    - (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; NSString *path = [[NSBundle mainBundle] p ...