Java(with Twitter4J)でOAuth認証とpostだけするコード
コンソール上でpost"のみ"が出来るJavaコードを書いてみた。Twitter4Jを利用しています。
また、こちらのページを参考にさせていただきました。
twitter4jでOAuth認証 - チラシ裏日記上等!!
全米が感動する超低機能ぶり。OAuth認証と単純なpost動作の挙動確認したかっただけなのに、どのサンプルもGUIなんだもの・・・。
※このコードを参考・使用して発生したいかなる損害にも、筆者(Atom)は一切の責任を持ちません。自己責任でご使用ください。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.awt.Desktop; import java.net.URI; import java.net.URISyntaxException; import twitter4j.Twitter; import twitter4j.Status; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.http.AccessToken; import twitter4j.http.RequestToken; public class test1{ public static void main(String[] args){ String consumerKey = "hogehoge"; String consumerSeacret= "hagehage"; TwitterFactory factory = new TwitterFactory(); Twitter twitter = factory.getInstance(); twitter.setOAuthConsumer(consumerKey, consumerSeacret); try { RequestToken requestToken = twitter.getOAuthRequestToken(); AccessToken accessToken = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(accessToken == null){ //一応表示もしておく System.out.println("Please go to this URL:"); System.out.println(requestToken.getAuthorizationURL()); //ブラウザにURLを投げつけて開かせる try { throwURL(requestToken.getAuthorizationURL()); } catch (URISyntaxException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } //PINコード打ち込んでもらう System.out.print("Prease enter the PIN:"); String pin = br.readLine(); try{ if(pin.length() > 0){ accessToken = twitter.getOAuthAccessToken(requestToken, pin); }else{ accessToken = twitter.getOAuthAccessToken(); } } catch (TwitterException te) { if(401 == te.getStatusCode()){ System.out.println("Unable to get the access token."); }else{ te.printStackTrace(); } } } //Tweetさせる部分。すさまじく愚直にはき出す。 while(true){ System.out.print("What's are you doing ? :"); String text = br.readLine(); if(text.equals("exit")) break; //"exit"入力で終了 Status status = twitter.updateStatus(text); //入力された文字を投げる } } catch (TwitterException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //アクセストークンを表示するメソッド(使ってない) private static void storeAccessToken(AccessToken accessToken){ System.out.println(accessToken.getToken()); System.out.println(accessToken.getTokenSecret()); } //ブラウザにURLを投げつけるメソッド private static void throwURL(String url) throws URISyntaxException, IOException { Desktop desktop = Desktop.getDesktop(); desktop.browse(new URI(url)); } }
(こんなコードに一晩かかったなんて言えない・・・。)
(もうすこしJavaらしいコードをですね・・・。)
なにかおかしい点などあれば、コメントしていただけると嬉しいです!