2011년 1월 25일 화요일

Java로 Twitter4j를 이용해서 트위터읽기

우선은 코드만 올려두고 나중에 인증과정에 대한 설명이나 실행 방법 설명 추가할 예정


import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;
import twitter4j.http.RequestToken;


public class OAuthEx {

 public static void main(String args[]) throws Exception{
   // The factory instance is re-useable and thread safe.
   Twitter twitter = new TwitterFactory().getInstance();
   twitter.setOAuthConsumer("소비키", "소비비밀키");
   RequestToken requestToken = twitter.getOAuthRequestToken();
   AccessToken accessToken = null;
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   while (null == accessToken) {
     System.out.println("Open the following URL and grant access to your account:");
     System.out.println(requestToken.getAuthorizationURL());
     System.out.print("Enter the PIN(if aviailable) or just hit enter.[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();
       }
     }
   }
   //persist to the accessToken for future reference.
   storeAccessToken(twitter.verifyCredentials().getId() , accessToken);
   Status status = twitter.updateStatus("아... 이거 때문인가????");
   System.out.println("Successfully updated the status to [" + status.getText() + "].");
 

   System.exit(0);
 }
 private static void storeAccessToken(int useId, AccessToken accessToken){

 System.out.println("useId : " + useId);
 System.out.println("AccessToken : " + accessToken);

 FileOutputStream fos = null;
 ObjectOutputStream oos = null;
 try{
 fos = new FileOutputStream("key.data");
 oos = new ObjectOutputStream(fos);

 oos.writeInt(useId);
 oos.writeObject(accessToken);

 }catch(Exception e){
 e.printStackTrace();
 }finally{

 try {
oos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

 try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
 }
 }

}

댓글 없음:

댓글 쓰기