java 的新浪oauth_工作笔记—新浪微博Oauth2.0授权 获取Access Token (java)

1 importjava.io.BufferedReader;2 importjava.io.InputStreamReader;3 importjava.io.OutputStreamWriter;4 importjava.net.URL;5 importjava.net.URLConnection;6 importjava.security.cert.CertificateException;7 importjava.security.cert.X509Certificate;8 importjava.util.Scanner;9

10 importjavax.net.ssl.X509TrustManager;11

12 /**

13 *@author刘显安14 * 不使用任何SDK实现新浪微博Oauth授权并实现发微薄小Demo15 * 日期:2012年11月11日16 */

17 public classTest18 {19 static String clientId="xxxxxx";//你的应用ID

20 static String clientSecret="xxxxxxxxxxxxxxxxxxxxxxx";//你的应用密码

21 static String redirectUri="www.baidu.com";//你在应用管理中心设置的回调页面

22

23 public static void main(String[] args) throwsException24 {25 testHttps();//测试26 //第一步:访问授权页面获取授权

27 System.out.println("请打开你的浏览器,访问以下页面,登录你的微博账号并授权:");28 System.out.println("https://api.weibo.com/oauth2/authorize?client_id="+clientId+"&response_type=code&redirect_uri="+redirectUri+"&forcelogin=true");29 //第二步:获取AccessToken

30 System.out.println("请将授权成功后的页面地址栏中的参数code:");31 String code=newScanner(System.in).next();32 getAccessToken(code);33 //第三步:发布一条微博

34 System.out.println("请输入上面返回的值中accessToken的值:");35 String accessToken=newScanner(System.in).next();36 updateStatus("发布微博测试!来自WeiboDemo!", accessToken);37 }38 /**

39 * 测试能否正常访问HTTPS打头的网站,40 */

41 public static voidtestHttps()42 {43 try

44 {45 trustAllHttpsCertificates();//设置信任所有的http证书

46 URL url=new URL("https://api.weibo.com/oauth2/default.html");47 URLConnection con=url.openConnection();48 con.getInputStream();49 System.out.println("恭喜,访问HTTPS打头的网站正常!");50 }51 catch(Exception e)52 {53 e.printStackTrace();54 }55 }56 /**

57 * 以Post方式访问一个URL58 *@paramurl 要访问的URL59 *@paramparameters URL后面“?”后面跟着的参数60 */

61 public static voidpostUrl(String url,String parameters)62 {63 try

64 {65 trustAllHttpsCertificates();//设置信任所有的http证书

66 URLConnection conn = newURL(url).openConnection();67 conn.setDoOutput(true);//这里是关键,表示我们要向链接里注入的参数

68 OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());//获得连接输出流

69 out.write(parameters);70 out.flush();71 out.close();72 //到这里已经完成了,开始打印返回的HTML代码

73 BufferedReader reader = new BufferedReader(newInputStreamReader(conn.getInputStream()));74 String line = null;75 while ((line = reader.readLine()) != null)76 {77 System.out.println(line);78 }79 }80 catch(Exception e)81 {82 e.printStackTrace();83 }84 }85 /**

86 * 获取AccessToken87 *@paramcode 在授权页面返回的Code88 */

89 public static voidgetAccessToken(String code)90 {91 String url="https://api.weibo.com/oauth2/access_token";92 String parameters="client_id=" +clientId+"&client_secret=" +clientSecret+

93 "&grant_type=authorization_code" +"&redirect_uri=" +redirectUri+"&code="+code;94 postUrl(url, parameters);95 }96 /**

97 * 利用刚获取的AccessToken发布一条微博98 *@paramtext 要发布的微博内容99 *@paramaccessToken 刚获取的AccessToken100 */

101 public static voidupdateStatus(String text,String accessToken)102 {103 String url="https://api.weibo.com/2/statuses/update.json";104 String parameters="status="+text+"&access_token="+accessToken;105 postUrl(url, parameters);106 System.out.println("发布微博成功!");107 }108 /**

109 * 设置信任所有的http证书(正常情况下访问https打头的网站会出现证书不信任相关错误,所以必须在访问前调用此方法)110 *@throwsException111 */

112 private static void trustAllHttpsCertificates() throwsException113 {114 javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];115 trustAllCerts[0] = newX509TrustManager()116 {117 publicX509Certificate[] getAcceptedIssuers()118 {119 return null;120 }121 public voidcheckServerTrusted(X509Certificate[] arg0, String arg1)122 throwsCertificateException123 {}124 public voidcheckClientTrusted(X509Certificate[] arg0, String arg1)125 throwsCertificateException126 {}127 };128 javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");129 sc.init(null, trustAllCerts, null);130 javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());131 }132 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值