使用新浪微博开放平台api同步微博内容至自己网站(Java使用新浪微博API开发微博应用的相关知识和一些)
优采云 发布时间: 2021-12-03 16:01使用新浪微博开放平台api同步微博内容至自己网站(Java使用新浪微博API开发微博应用的相关知识和一些)
想了解Java使用新浪微博API开发微博应用的基本方法吗?在本文中,刘先安将仔细讲解Java使用微博API开发应用的相关知识以及一些代码示例。欢迎阅读和纠正我们。先划重点:Java、微博、API,大家一起学习。
新浪微博API现已广泛使用,制作完整的开发流程Demo
1、 第一步就是注册,就不多说了。注册账号,成为开发者账号。如果做不到,请立即砸电脑,拔掉网线,回家种田。
2、第二步是创建一个应用程序。创建开发者账号后,打开新浪微博开发平台:
点击上方菜单栏中的最后一个管理中心
如果是web应用,选择创建网站访问的应用,然后根据新浪微博的要求,balabalabala自己做
应用程序已创建。点击应用跳转到页面,点击查看应用参数,可以看到应用的相关参数,这些参数会在第四步用到。
3、第三步下载SDK,回到顶部菜单栏,点击Documents,然后点击左侧菜单栏SDK,选择java sdk,下载balabala。如果您在这一步有任何问题,请回家种田。
所谓sdk并不是sdk(个人觉得这个名字有点误导),而是一个可运行的项目。下载后解压,导入eclipse,可以看到src和example两个目录
src是新浪微博的一部分
example 是一个例子,一个界面的演示
4、第四步配置参数,在src目录找到config.properties
前三个参数需要配置为第二步中提到的应用参数中的参数。
后者是默认的,不需要更改
前三个参数配置如下
client_ID 是应用程序密钥
client_SERCRET 是 App Secret
redirect_URI 就是OAuth2.0 授权回调URL 申请信息>高级信息>OAuth2.0 授权设置 下面这个授权回调页面就是你填写的一个URL,指向自己的服务器,当然下开发 在这个阶段,我们可以使用任何 URL,只要它能让我们了解 OAuth 授权过程。这里我们进入一个取消授权回调页面。也是如此。注意这里的 URL 字符串必须一致。
5、第五步获取AccessToken。一般情况下,AccessToken必须通过OAuth2.0认证来获取,但是为了简单起见,我来说一个简单的方法。以后再说OAuth2.0
仍然选择顶部菜单栏Document>API>API Test Tool
选择创建的应用,点击获取AccessToken。下面的文本框就是我们想要的AccessToken
6、 第六步做一个界面示例
直接去微博API找一个已有权限的接口,
随机找了一个用户发的微博status/user_timeline 用于测试
点击该界面可以查看该界面的详细信息,可以查看该界面的各个传入参数和返回参数,不再赘述。
不使用任何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());
}
}
访问授权页面:
授权成功:
成功发布微博:
控制台输出:
相关文章