java 微博sdk_Java基于新浪微博SDK实现发微博的功能

本文介绍了如何使用Java结合最新的新浪微博SDK实现发微博功能。首先在新浪微博开放平台创建应用获取App Key和App Secret,接着配置SDK,通过授权获取access_token,最后利用access_token调用API发送微博。目前存在的挑战是自动获取code,因为需要从浏览器手动复制。
摘要由CSDN通过智能技术生成

背景

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

新浪微博的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授权设置 设置回调地址。如下图所示。

0818b9ca8b590ca3270a3433284dd417.png

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

新浪微博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=******************

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

0818b9ca8b590ca3270a3433284dd417.png

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值