转自:https://www.cnblogs.com/demingblog/p/5517255.html

一、准备。

1.微博账号。注册很容易。

2.微博账号成为开发者。

登录微博开放平台  登录你注册的账号,然后进入管理中心完善开发者基本信息和身份认证。

这个时候,还需要浏览一下微博开放平台的文档,来了解一些这个开放平台的一些规范性的名词。

每个链接都点进去看看,顺便看看微博API文档,你会发现,里边有介绍说,一些接口的调用需要获取access_token。本文就是要实现这个目标。

二、创建应用。

比如咱们要开发一个网站,然后在这个网站里边对接微博开放平台,调用开放平台的接口。那么我们需要在登录微博开放平台之后创建一个应用。

创建应用完成之后,会得到应用的App key 和App Secret 。然后咱们在拿着个这些信息 调用新浪微博的auth2.0认证获取access_token。

在得到access_token之后,我们就可以调用我们需要的接口了,例如发个微博等等。

1.创建引用的地方。开放平台--》点击上面导航菜单“微链接”。这里微链接的概念也是这个开放平台的一个名词。具体含义可以看看相关文档。

2.创建什么类型的应用?

随意,看你的情况。测试的时候创建什么都可以,试一下,放心的搞吧。我创建的是网页引用,应为我发现简单点进去之后,也不需要填写过多的信息。

如下图:

创建完成之后,在我的应用可以看到:

点进去可以看到应用相关的信息。一会儿我们需要用到这里边的 app key和app secret ,并且需要配置应用授权回调地址。

三、下载微博开发 SDK.

开发SDK里边有一些示例,可以直接作为参考。下载地址。我下载的是Java版的  weibo4j,下载之后,导入开发工具。如下图:

代码比较多,别慌,先找到examples包下面的oauth2 包下的 OAuth4Code 类。我们需要运行这个类。

这个类完成了oauth操作,这一步骤包括两次请求

第一次:
https://api.weibo.com/oauth2/authorize?client_id=1234567890&redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code第二次:
https://api.weibo.com/oauth2/access_token

注意,第一次请求中有一个 client_id,这个参数需要我们在config.properties中配置,它对应我们上面创建的应用的app key。

同样的,这个配置文件里边还有一个client_SERCRET,它对应于我们上面创建的应用的app sercret,复制过来放进去。

这里还有个参数redirect_uri,比较关键。当我们运行OAuth4Code这个类的时候,在第一次请求完了之后,这个地址会被回调,同时带过来一个code参数。

我们需要复制这个参数,输入到控制台,然后回车,第二次请求便发起了,这个请求会返回我们需要的access_token。那么问题来了,这个地址怎么配置?

1.在上面创建的引用中,找到  接口管理--》授权机制  也没有个配置 回调地址的地方。填写 https://api.weibo.com/oauth2/default.html 就可以了。

2.上面的这个链接对应的要配置到 config.properties中,如下:

client_ID = 1234567890
client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a
redirect_URI = https\://api.weibo.com/oauth2/default.html
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/

三、运行程序获取access_token。

在上面的第二步骤完成之后,配置都配置好了之后。运行下面这个类:

public class OAuth4Code {public static void main(String [] args) throws WeiboException, IOException{Oauth oauth = new Oauth();BareBonesBrowserLaunch.openURL(oauth.authorize("code"));System.out.println(oauth.authorize("code"));System.out.print("Hit enter when it's done.[Enter]:");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String code = br.readLine();Log.logInfo("code: " + code);try{System.out.println(oauth.getAccessTokenByCode(code));} catch (WeiboException e) {if(401 == e.getStatusCode()){Log.logInfo("Unable to get the access token.");}else{e.printStackTrace();}}}
}

运行程序之后,在控制台输入了一行日志之后,并进入等待控制台输入的状态了,马上浏览器打开了一个页面,经过跳转之后页面变成了下面这个:

复制浏览器地址栏的 code 参数值。回到myeclipse中,粘贴这个值,然后回车。程序继续执行,利用这个code参数,再次发起请求 最终成功之后可以得到access_token

整个流程效果日志:

四、总结本例中 oauth授权流程。

两次请求

第一次:

https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code

同意授权之后,会重定向:

//同意授权后会重定向
http://www.example.com/response&code=CODE

第二次:

根据上面的code再次发起请求。得到access_token

其中会碰到一些问题,主要原因是,授权地址配置的不正确。按照本文的例子配置,可以成功的运行程序。获得access_token。

错误码有如下情况:

错误码(error) 错误编号(error_code) 错误描述(error_description)
redirect_uri_mismatch 21322 重定向地址不匹配
invalid_request 21323 请求不合法
invalid_client 21324 client_id或client_secret参数无效
invalid_grant 21325 提供的Access Grant是无效的、过期的或已撤销的
unauthorized_client 21326 客户端没有权限
expired_token 21327 token过期
unsupported_grant_type 21328 不支持的 GrantType
unsupported_response_type 21329 不支持的 ResponseType
access_denied 21330 用户或授权服务器拒绝授予数据访问权限
temporarily_unavailable 21331 服务暂时无法访问
appkey permission denied 21337 应用权限不足

微博开放平台开发(一)获取access_token相关推荐

  1. 新浪开放平台:解决获取access_token抛 21323 异常,以及接口调用

    使用新浪开放平台的准备 1)要注册一个新浪微博,并在新浪开放平台登陆(http://open.weibo.com/)     2)创建应用          这里以创建"移动应用" ...

  2. 使用HttpClient登录微博开放平台,获取授权code

    最近需要使用微博开放平台的一些功能,由于官方sdk略坑,故决定自己写个HttpClient来模拟获取授权code.不多说,直接上代码. 首先配置微博开放平台基本参数. private static S ...

  3. 【49.Auth2.0认证与授权过程-微博开放平台认证授权过程-百度开放平台认证授权过程-社交登录实现(微博授权)-分布式Session问题与解决方案-SpringSession整合-Redis】

    一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...

  4. 关于微博开放平台Oauth2.0接入网站应用

    关于什么是微博开放平台及微博开放平台能做什么,咱就不做搜索引擎的搬运工了 这里直接给个链接介绍:微博开放平台 本文只是抛砖引玉,讲讲微博开放平台的基本用法,适合没接触过开放平台的朋友入门学习,老鸟就略 ...

  5. 网站接入微博快捷登录-微博开放平台

    微博开放平台地址 因为我是接入web网站微博登录功能,所以,跳过移动应用部分,向下滑动 Web网站 OAuth2.0授权,与微博登录组件. 示例 使用接口深度开发,适合后端开发人员 使用微博的OAut ...

  6. 8.腾讯微博Android客户端开发——自动获取验证码(2)

    上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如UC.天天等,输入完QQ账号信息点击" ...

  7. 腾讯微博Android客户端开发——自动获取验证码

    上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如UC.天天等,输入完QQ账号信息点击" ...

  8. 微博粉丝平台开发全攻略

    微博粉丝平台开发最便捷的方法是从微信迁移过来,不过微博粉丝平台对此做了些改动. 以下引用自:http://open.weibo.com/wiki/%E5%BE%AE%E4%BF%A1%E5%BC%80 ...

  9. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单

    微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单  技术qq交流群:JavaDream:251572072 ...

  10. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

最新文章

  1. opencv mat 修改_OpenCV中initUndistortRectifyMap函数存在bug原因探究
  2. Haunt - Youzan 服务发现 概述
  3. Charles调试Https iOS
  4. android和web api接口,WebService和Webapi的区别
  5. php 四舍五入百位,php取整函数ceil,floor,round,intval函数的区别
  6. outlook工具栏显示_Outlook 2007中的待办事项栏仅显示当前任务
  7. android简单小项目实例_300行C代码打造简单的闹钟小程序,适合初学C++同学练手的项目...
  8. Altium Designer(六):Make Library
  9. RAC安装时,报The specified nodes are not clusterable 的解决方法
  10. 【码住收藏】软件测试报告模板范文来了——优秀测试报告模板流程
  11. GBase8s数据库MINUS 运算符
  12. 低碳世界杂志低碳世界杂志社低碳世界编辑部2022年第7期目录
  13. 三菱伺服电机编码器ID修改器 支持三菱伺服电机J2/J2S/J3/J4系列所有电机
  14. 软件著作权申请流程及注意事项,你知道多少?
  15. 【自动驾驶】鸽了很久的小物体目标检测代码【小物体目标检测】
  16. Freemarker源码分析(9)core.JSONParser类
  17. SiTime硅晶振和石英晶振的冲击和振动性能比较
  18. 武汉大学计算机学院卓越工程师班弘毅学堂,武汉大学弘毅学堂培养方案(2018级试行)...
  19. Extraction failed.
  20. 图的连通性问题之连通和最小环

热门文章

  1. 电脑蓝屏按哪三个键恢复?怎么修复蓝屏问题
  2. Redis主从复制(Master/Slaver)初级
  3. 数据库设计遵循的原则
  4. Intellij Idea插件开发点滴记录
  5. esp32-Arduino开发学习
  6. 吞噬星空java_(完)Java基础练习题:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 - 菜鸟头头...
  7. Metasploit Framework(3)Meterpreter
  8. Vue3中数据更新函数effect的实现
  9. 计算机病毒为了隐藏,识别计算机病毒的方法
  10. 转载 一堂价值39万元的课,把她看完,你一定会有所获!