背景

最近用实现了一个简单的发微博的功能。

新浪微博的SDK已经经历了多次更新,而网上的资料、教程大多还是基于旧版本的,很多细节上有了一些变化。本文将基于最新的新浪微博SDK介绍发微博的过程。

简介

首先,需要在新浪微博开放平台创建自己的应用,获取App Key与App Secret两个字符串。

然后,下载新浪微博SDK。在配置文件中填入上一步获得点的AppKey与App Secret,以及回调地址。

运行例子程序中的weibo4j.examples.oauth2里的Oauth4Code.java,将会引导用户对你创建的应用授权。

授权完成后,一个code将会被传到回调地址。

将这个code输入控制台,会得到一个access_token。

利用这个access_token就可以调用发微博API了。

详解

创建应用

进入新浪微博开放平台

点击上方的微连接-其他,开始创建新应用。

填入应用名称,选择应用类型。在以前,”站内应用”是一个很方便的类型。但是现在已经没了,我选择的是”客户端”-“桌面”-“windows”。

创建成功后,进入应用基本信息页面,其中,App Key和App Secret已经生成了。

然后要进入 应用信息-高级信息-Oauth2授权设置 设置回调地址。如下图所示。

在这个简单的发微博功能中,我们不会真正用到回调地址。将回调地址设为百度是个不错的选择。

新浪微博SDK

新浪微博SDK下载

本以为新浪微博SDK会是一个jar包,结果却是一堆源码与资源文件,以及许多例子程序。

下载后,编辑Config.properties配置文件。

client_ID :appkey

client_SERCRET :app secret

redirect_URI : 回调地址

这三个参数都必须跟上一步得到的保持一致。

运行例子程序中的weibo4j.examples.oauth2里的Oauth4Code.java,将会打开默认浏览器,进入应用授权界面。

授权成功后,将会跳转到回调地址(我们填入的是百度),

地址栏中显示的是http://www.baidu.com/?code=******************

将**************复制下来,填入控制台。

输入code。

如果输入正确,access_token将被输出。

access_token有多个键值对,阅读源码可知道AccessToken.getAccessToken()方法可以取出其中的access_token字符串。这个字符串就是我们需要的“令牌”。

而发送微博的功能只需要两行代码即可实现

Timeline tm = new Timeline("前面得到的access_token");

tm.updateStatus("微博内容");

demo

这里给出一个简单的demo,运行后手动输入code即可自动发送微博。

public static void main(String[] args){

//TODO Auto-generated method stub

try {

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();

String access_token =oauth.getAccessTokenByCode(code).getAccessToken();

Timeline tm = new Timeline(access_token);

tm.updateStatus("测试:自动发送微博。");

} catch (WeiboException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

总结

到这里,发送微博的功能已经实现了。 但是其中有个问题,code必须手动从浏览器地址栏取出后输入我们的应用。而作为一个桌面应用,这个过程没什么简单的办法去掉。如果是网页应用的话,倒是比较容易获取。 有一个思路是通过代码模拟浏览器行为,但这很困难,因为新浪微博登录过程中对账号密码进行了比较复杂的加密,而加密算法藏得比较深难以找到。网上倒是有不少文章分析了这一过程,但新浪微博的加密算法也不是一成不变的,网上的方法基本上都已经过时。

java 微博sdk_Java基于新浪微博SDK实现发微博的功能相关推荐

  1. Java调用 新浪微博API 接口发微博(包含js微博组件、springMVC新浪登录)详解

    参考自:http://www.myexception.cn/program/1930025.html https://blog.csdn.net/qq_36580777/article/details ...

  2. Java调用 新浪微博API 接口发微博,逐项讲解,绝对清晰

    转载自:http://www.myexception.cn/program/1930025.html Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰 最近要做个课程设计,使用微博控制树莓 ...

  3. 基于Redis的用户发微博

    基于Redis的用户发微博 一.用户发微博业务场景分析 二.用户发微博的redis技术方案 三.SpringBoot+Redis 实现用户发微博 步骤1:创建content表 CREATE TABLE ...

  4. MPSDK4J 是JAVA微信公平台开发SDK,没有复杂的功能,一切源于微信API,愿你会喜欢使用。-- 题记

    MPSDK4J 是JAVA微信公平台开发SDK,没有复杂的功能,一切源于微信API,愿你会喜欢使用.-- 题记 1.介绍 MPSDK4J,非常直观的阐述了此项目的意义所在.没错,它就是JAVA语言环境 ...

  5. 利用java语言在eclipse下实现在新浪微博开发平台发微博(转)

    实现原理: 开发者利用sdk包开发某个应用完成后,该应用与新浪微博服务器连接,通过HTTP数据形式与服务器的API接口交换数据.在开发过程中,亦可实时调试. 各种语言的软件开发包(SDK)http:/ ...

  6. Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

    最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内 ...

  7. 最新JAVA调用新浪微博API之发微博(转)

    最近有个项目中需要调用微博的api发新微博,网上找了很多相关教程,遇到了很多坑.后来给官方发邮件询问才知道微博官方早在2017年3月份就调整了相关接口,取消了网上现有教程中的发送微博的接口(updat ...

  8. 新浪微博Python SDK笔记——发微博(二)

    本节将改进上一节中发微博的程序,主要的改进功能是:能够保存授权的access_token,不用进行重复授权.先看一下本节工程的目录结构(如图1所示). 图1 send_weibo.py为发微博的主程序 ...

  9. 新浪微博Python SDK笔记——发微博(一)

    上一节中已经安装了Python SDK,可以在程序中引入weibo模块编写微博程序了.下面的程序的功能就是利用该模块发一条新微博,先开具体的代码: #! /usr/bin/python"&q ...

最新文章

  1. 表贴光电池 FU-NJL6402R-2 的特性
  2. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法...
  3. boost::hana::greater_equal用法的测试程序
  4. gulp build
  5. 【 POJ - 2033 】Alphacode (dp,有坑)
  6. 论文浅尝 | Leveraging Knowledge Bases in LSTMs
  7. 无符号有符号乘法_刘帅嵌入式系统-乘法指令
  8. iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警
  9. [HNOI2005]狡猾的商人 带权并查集
  10. HDU2080 夹角有多大II【数学】
  11. 翻译: Web 3.0是一种几乎无需信任的承诺的协议/架构
  12. php百度地图普通ip定位,使用百度地图定位IP位置
  13. IDEA GIT 单文件回退到指定版本
  14. 同济版《线性代数》再遭口诛笔伐,网友:它真的不太行...
  15. 用DEM制作通用三维地形模型
  16. DroppyCtf靶机
  17. 冷高轮时间windows电脑屏幕保护
  18. 小武与SSD的相遇笑死我了!
  19. Java发送电子邮件(使用mail.jar和activation.jar)
  20. Linux计划任务篇

热门文章

  1. 网页百度各种广告屏蔽
  2. 机械手基坐标系和工具坐标系的相互转换
  3. 物联网技术的应用领域
  4. 12小时制转24小时制
  5. 11.9 leetcode打卡
  6. 深刻理解空间(线性空间,度量空间,赋范空间,线性赋范空间,内积空间,巴拿赫空间以及希尔伯特空间)
  7. (附源码)ssm教学督导管理系统 毕业设计 292346
  8. 【漏洞复现】MS12-020漏洞(蓝屏攻击)复现
  9. cad拉伸怎么用_【cad比例缩放教程】cad缩放怎么用?
  10. 树莓派无显示器连接无线