Java使用新浪微博API开发微博应用的基本方法

 更新时间:2015年11月26日 17:30:09   作者:六仙庵  
这篇文章主要介绍了Java使用新浪微博API开发微博应用的基本方法,文中还给出了一个不使用任何SDK实现Oauth授权并实现简单的发布微博功能的实现方法,需要的朋友可以参考下

新浪微博API现在运用比较广泛,做一个完整的开发流程Demo
1、第一步注册,就不多说了,注册帐号以及成为开发者帐号,这步操作不会的话请你马上砸掉电脑拔掉网线回家种田。
2、第二步创建应用,开发者帐号创建好了,打开新浪微博开发平台: http://open.weibo.com
   上面菜单栏点击最后一个 管理中心

20151126172241979.jpg (600×312)

如果是web的应用的话选择创建网站接入的应用,然后根据新浪微博的要求balabalabala自己去搞定
  应用创建完毕。点击应用跳转页面,点击查看应用参数,可以看到应用的相关参数,这些参数将会在第四步用到。
3、第三步下载sdk,回到顶部的菜单栏,点击 文档 ,再点击左边菜单栏sdk,选择java sdk,然后balabala下载,这步操作有问题也请回家种田。

20151126172311674.jpg (600×420)

所谓的sdk并非是sdk(个人觉得名称有点误导),而是一个可运行的工程,下载完毕之后解压 ,并导入到eclipse,可以看到两个目录 src和example
src是新浪微博的部分
example是实例,接口的demo
4、第四步配置参数,找到src目录下的config.properties
前三个参数需要自己配置 为第二步里说过的应用参数里的参数
后面的都是默认的不需要改
前三个参数配置如下
client_ID为App Key
client_SERCRET为App Secret
redirect_URI为 OAuth2.0授权的回调URL 应用信息>高级信息>OAuth2.0 授权设置下面的授权回调页  这是一个你自己填写的URL 指向的是你自己服务器 当然在开发阶段我们可以使用任何URL 只要能够让我们了解OAuth授权的流程就好了 这里我们就输入一个http://www.baidu.com  取消授权回调页也是如此 注意这里的URL的字符串必须是一致
5、第五步获取AccessToken,正常情况下AccessToken的获取是需要通过OAuth2.0认证的,但是为了更简单我先说一种简单的方法。后面再讲OAuth2.0
还是选择最上面的菜单栏 文档>API>API测试工具
选择创建的应用 点击获取AccessToken 下面的文本框里就是我们要的AccessToken

20151126172332485.jpg (346×373)

6、第六步先做一个接口实例
去微博API里随便找一个已有权限的接口,
我随便找了一个 获取用户发布的微博  statuses/user_timeline 做测试用的

20151126172350677.jpg (600×365)

点击这个接口查看这个接口详情,可以查看到接口的每个传入参数以及返回参数 这个无需多说。

不使用任何SDK实现Oauth授权并实现简单的发布微博功能:
创建一个Java项目,编写如下代码,具体过程代码中已写的很清楚,这里不再做解释:

注意先修改应用ID、应用密码和回调页面成你自己的!访问授权页面:

package com;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Scanner;

import javax.net.ssl.X509TrustManager;

/**
 * @author 刘显安
 * 不使用任何SDK实现新浪微博Oauth授权并实现发微薄小Demo
 * 日期:2012年11月11日
 */
public class Test
{
  static String clientId="2355065950";//你的应用ID
  static String clientSecret="72037e76bee00315691d9c30dd8a386a";//你的应用密码
  static String redirectUri="https://api.weibo.com/oauth2/default.html";//你在应用管理中心设置的回调页面
  
  public static void main(String[] args) throws Exception
  {
    testHttps();//测试
    //第一步:访问授权页面获取授权
    System.out.println("请打开你的浏览器,访问以下页面,登录你的微博账号并授权:");
    System.out.println("https://api.weibo.com/oauth2/authorize?client_id="+clientId+"&response_type=code&redirect_uri="+redirectUri+"&forcelogin=true");
    //第二步:获取AccessToken
    System.out.println("请将授权成功后的页面地址栏中的参数code:");
    String code=new Scanner(System.in).next();
    getAccessToken(code);
    //第三步:发布一条微博
    System.out.println("请输入上面返回的值中accessToken的值:");
    String accessToken=new Scanner(System.in).next();
    updateStatus("发布微博测试!来自WeiboDemo!", accessToken);
  }
  /**
   * 测试能否正常访问HTTPS打头的网站,
   */
  public static void testHttps()
  {
    try
    {
      trustAllHttpsCertificates();//设置信任所有的http证书
      URL url=new URL("https://api.weibo.com/oauth2/default.html");
      URLConnection con=url.openConnection();
      con.getInputStream();
      System.out.println("恭喜,访问HTTPS打头的网站正常!");
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  /**
   * 以Post方式访问一个URL
   * @param url 要访问的URL
   * @param parameters URL后面“?”后面跟着的参数
   */
  public static void postUrl(String url,String parameters)
  {
    try
    {
      trustAllHttpsCertificates();//设置信任所有的http证书
      URLConnection conn = new URL(url).openConnection();
      conn.setDoOutput(true);// 这里是关键,表示我们要向链接里注入的参数
      OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());// 获得连接输出流
      out.write(parameters);
      out.flush();
      out.close();
      // 到这里已经完成了,开始打印返回的HTML代码
      BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
      String line = null;
      while ((line = reader.readLine()) != null)
      {
        System.out.println(line);
      }
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  /**
   * 获取AccessToken
   * @param code 在授权页面返回的Code
   */
  public static void getAccessToken(String code)
  {
    String url="https://api.weibo.com/oauth2/access_token";
    String parameters="client_id=" +clientId+"&client_secret=" +clientSecret+
      "&grant_type=authorization_code" +"&redirect_uri=" +redirectUri+"&code="+code;
    postUrl(url, parameters);
  }
  /**
   * 利用刚获取的AccessToken发布一条微博
   * @param text 要发布的微博内容
   * @param accessToken 刚获取的AccessToken
   */
  public static void updateStatus(String text,String accessToken)
  {
    String url="https://api.weibo.com/2/statuses/update.json";
    String parameters="status="+text+"&access_token="+accessToken;
    postUrl(url, parameters);
    System.out.println("发布微博成功!");
  }
  /**
   * 设置信任所有的http证书(正常情况下访问https打头的网站会出现证书不信任相关错误,所以必须在访问前调用此方法)
   * @throws Exception
   */
  private static void trustAllHttpsCertificates() throws Exception
  {
    javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
    trustAllCerts[0] = new X509TrustManager()
    {
      @Override
      public X509Certificate[] getAcceptedIssuers()
      {
        return null;
      }
      @Override
      public void checkServerTrusted(X509Certificate[] arg0, String arg1)
          throws CertificateException
      {}
      @Override
      public void checkClientTrusted(X509Certificate[] arg0, String arg1)
          throws CertificateException
      {}
    };
    javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, null);
    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  }
}

访问授权页面:

20151126172812746.png (613×340)

授权成功:

20151126172829414.png (690×349)

发布微博成功:

20151126172843215.png (580×107)

控制台输出结果:

20151126172901747.png (996×256)

相关文章

  • 通过spring boot 设置tomcat解决 post参数限制问题

    通过spring boot 设置tomcat解决 post参数限制问题

    这篇文章主要介绍了通过spring boot 设置tomcat解决 post参数限制问题,需要的朋友可以参考下
    2019-05-05
  • Java中对象初始化顺序的详细介绍

    Java中对象初始化顺序的详细介绍

    在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,网上关于Java中对象初始化顺序的文章很多,这篇文章我们将详细介绍Java中对象初始化顺序。有需要的可以参考学习。
    2016-10-10
  • SpringMvc导出Excel实例代码

    SpringMvc导出Excel实例代码

    本篇文章主要介绍了SpringMvc导出Excel实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Java9中接口的私有方法详解

    Java9中接口的私有方法详解

    印象中Java 接口就没有论述私有方法这回事。既然 Java 9 添加了这项特性,那么,应该就有它的用途,我们一起来看看 Java 9 中的接口的私有方法是什么样的吧
    2023-04-04
  • java实现英文翻译程序

    java实现英文翻译程序

    这篇文章主要为大家详细介绍了java实现英文翻译程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 聊聊Lombok中的@Builder注解使用教程

    聊聊Lombok中的@Builder注解使用教程

    @Builder注解的作用主要是用来生成对象,并且可以为对象链式赋值。接下来通过本文给大家介绍Lombok中的@Builder注解使用教程,感兴趣的朋友一起看看吧
    2021-11-11
  • SpringBoot集成kaptcha验证码

    SpringBoot集成kaptcha验证码

    这篇文章主要为大家详细介绍了SpringBoot集成kaptcha验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java文件拒绝访问问题及解决

    Java文件拒绝访问问题及解决

    这篇文章主要介绍了Java文件拒绝访问问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取

    SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取

    SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • IDEA中使用Docker Compose容器编排的实现

    IDEA中使用Docker Compose容器编排的实现

    这篇文章主要介绍了IDEA中使用Docker Compose容器编排的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论