使用新浪微博开放平台api同步微博内容至自己网站(看来微博下载微博开放平台.java类A*敏*感*词*ey和AppSecret)
优采云 发布时间: 2021-12-03 12:11使用新浪微博开放平台api同步微博内容至自己网站(看来微博下载微博开放平台.java类A*敏*感*词*ey和AppSecret)
看来微博又在中国发展起来了,不容忽视,因为昨天有这么一条新闻“中国首届微博开发者大会”,官网如下:
使用新浪微博开放平台的API,首先需要获取新浪分配的App key和App Secret。下面是我创建应用后新浪分配的App key和App Secret(这个要保密)。
然后下载微博SDK,我用的是Java的weibo4j。目前提供以下语言版本:
将SDK包中的weibo.java类的App Key和App Secret修改为刚刚获取的App Key和App Secret,如下图使用说明所示:
完成这些之后,就可以根据提供的Demo开始编写代码了。如下:
WebOAuth.java用于初始化Weibo.java类所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法来获取Request Token和Access Token。所需参数如代码所示。此外,还提供了发布文本微博的update()方法。
package weibo4j.examples; import weibo4j.Status; import weibo4j.Weibo; import weibo4j.WeiboException; import weibo4j.http.AccessToken; import weibo4j.http.RequestToken; import java.io.UnsupportedEncodingException; // Web 方式认证 public class WebOAuth { private Weibo weibo; public WebOAuth(){ // 准备好Consumer Key、Consumer Secret // 对应于新浪微博应用就是申请到的 App key 和 Secret key System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); weibo = new Weibo(); } // 根据传入的 callback_url 获取 request token public RequestToken getRequestToken(String backUrl) { try { // 指定 callback_url 并获得 request token RequestToken requestToken = weibo.getOAuthRequestToken(backUrl); System.out.println("Request token: " + requestToken.getToken()); System.out.println("Request token secret: " + requestToken.getTokenSecret()); return requestToken; } catch (Exception e) { System.out.println("获取Request token发生异常!"); e.printStackTrace(); return null; } } // 根据传入的 request token 和 verifier 获取 access token public AccessToken gettAccessToken(RequestToken requestToken, String verifier) { try { AccessToken accessToken = weibo.getOAuthAccessToken(requestToken .getToken(), requestToken.getTokenSecret(), verifier); System.out.println("Access token: " + accessToken.getToken()); System.out.println("Access token secret: " + accessToken.getTokenSecret()); return accessToken; } catch (Exception e) { System.out.println("获取Access token发生异常!"); e.printStackTrace(); return null; } } // 根据传入的 Access Token 和内容发表微博 public void update(AccessToken access, String content) { try { weibo.setToken(access.getToken(), access.getTokenSecret()); content = new String(content.getBytes("GBK"), "UTF-8"); Status status = weibo.updateStatus(content); System.out.println("成功发表微博:" + status.getText() + "."); } catch (UnsupportedEncodingException e) { System.out.println("微博内容转编码发生异常!"); e.printStackTrace(); } catch (WeiboException e) { System.out.println("发表微博发生异常!"); e.printStackTrace(); } } }
request.jsp 用于提供 callback_url(这里我们自定义为下面的 callback.jsp)。获取RequestToken后,将RequestToken保存到Session中,将页面重定向到callback.jsp进行验证和授权。
请点击进行Web方式的OAuth认证!</a>
callback.jsp,在上一步重定向之后,oauth_verifier 参数会附加到callback_url。这时候我们根据Session中存储的RequestToken和获取到的oauth_verifier参数来申请AccessToken。获取到AccessToken后,我们将页面重定向到writeWeibo.html页面,用于写微博。
writeWeibo.html,一个非常简单的HTML文件。
发布sina微博 请在这里写上140字符以内的文本: 测试新浪微博!
updateWeibo.jsp,用于发布文本微博,即调用WebOAuth.java中的update方法。
在运行之前,我们要准备好Tomcat,把上面的源文件放到正确的目录下。另外,SDK包中收录的commons-httpclient-3.1.jar包要添加到\WEB-INF\lib目录下,weibo4j.jar(里面是具体的Java在新浪微博开放平台实施)。
运行Tomcat,在浏览器中访问request.jsp页面,如下图:
点击链接,如下图(注意地址栏的变化):
地址栏的网址如下:
://localhost:8080/sinaweibo/callback.jsp
填写具体有效的新浪微博账号、密码和授权。以下是我用于测试授权的微博账号的填写结果:
地址栏的网址如下:
:8080/sinaweibo/writeWeibo.html
点击“发布”,如下图:
登录微博查看,如下图:
查看账户授权的应用列表:
至此,使用新浪微博开放平台发布微博的OAuth方式大概就是这个过程了。
概括:
1、 其实还有很多细节没说到。我尝试了很多次,才发现问题,理解问题,然后解决问题。
2、 如果我们登录新浪微博的账号信息cookie已经保存在浏览器中,那么授权时就不需要输入账号信息了,当然不用当前账号也可以修改用于授权;
3、 还有一些信息是在控制台输入的,比如Token、URL、服务器返回信息等,截图中没有显示。
您可能对以下内容感兴趣:
OAuth与新浪微博开放平台介绍
本文来自“蚂蚁”博客,请务必保留此出处