http://dakccom.tistory.com/72
트위터랑 연동시키는 많이 모듈이 존재하지만, 그 중에 나름 괜찮다고 느끼는 모듈은 twitter4j 입니다.
[전체구조]
그럼 즐프하세요~
트위터랑 연동시키는 많이 모듈이 존재하지만, 그 중에 나름 괜찮다고 느끼는 모듈은 twitter4j 입니다.
설치순서
1. http://twitter4j.org/en/index.html => 다운로드
2. twitter4j-xxx.jar 파일을 프로젝트에 import 시켜줍니다.
끝? 맞습니다. 이젠 설정할게 없습니다.
이제부터 트윗만 하면 됩니다.ㅋ
자신의 트윗에 뭔가 할려면 당근 계정연동이 되어야 합니다.
방법은 OpenAPI OAuth 라는 인증을 사용해서 인증되거나, 아니면 예전에는 코딩상에서 그냥 ID/PW 를 넣어서 보내면 된걸로 아는데,
지금 해보니깐 이제는 완전히 OAuth로 넘어갔더군요.쩝.. 그래서 연동은 필수인듯 합니다.
OAuth 관련문서는 따로 준비하겠습니다.
A. 트위터 검색 [ 연동필요없음 ]
Twitter twitter = new TwitterFactory().getInstance();
String text = "java";
Query query = new Query(text);
QueryResult result;
result = twitter.search(query);
for (Tweet tweet : result.getTweets()) {
System.out.println(tweet.getText());
}
B. OAuth 로그인 연동
1. 트위터 개발센터에 접속하셔서 ( http://dev.twitter.com/ ) 로그인을 합니다.
2. Register a new app 를 클릭해서 새로운 app을 생성시킵니다.[client, web] 두 저번이 있는데 여기에는 web 버전을 하겠습니다.
3. app 항목을 등록시켜줍니다.
* Registered Callback URL 은 트위터 로그인 창에서 다시 내 사이트로 돌아오는 페이지 입니다.
등록 후에 해당 app 정보에 들어가 보면
Consumer key , Consumer secret key 정보가 있는데 인증을 위해선 필수 항목이고, OAuth 아키텍쳐의 기본입니다.
4. 마지막으로 step1.jsp , step2.jsp 파일을 만들겠습니다.
[전체구조]
그림을 보시면 아시겠지만
우리가 만들어야 하는 파일은 2가지가 있습니다.
step1.jsp
Twitter twitter = new TwitterFactory().getInstance();
//KEY 정보 입력합니다.
twitter.setOAuthConsumer("CONSUMER_KEY", "CONSUMER_SECRET");
RequestToken requestToken = null;
requestToken = twitter.getOAuthRequestToken();
// step2.jsp 에서 Secret 값을 비교하기 위해서 session 만들겠습니다.
request.getSession().setAttribute("Token",requestToken.getToken());
request.getSession().setAttribute("Secret",requestToken.getTokenSecret());
// getAuthorizationURL 메소드를 호출하면 트위터 이동 페이지가 호출됩니다.
requestToken.getAuthorizationURL();
그럼 트위터로 거거싱 ~ ㅋ
트위터 로그인 페이지가 뜨게되는데 유저가 로그인을 하게 되면 최초 callback URL 주소가 호출됩니다.
당근 step2.jsp 가 되겠죠?
step2.jsp
Twitter twitter = new TwitterFactory().getInstance();
//KEY 정보 입력합니다.
twitter.setOAuthConsumer("CONSUMER_KEY", "CONSUMER_SECRET");
//트위터에서 넘겨주는 oauth_token 값을 파라미터로 받습니다.
String oauthToken = request.getParameter("oauth_token");
//아까 이것들은 step1 에서 구웠던 값들입니다.
String token = (String)request.getSession().getAttribute("Token");
String secret = (String)request.getSession().getAttribute("Secret");
AccessToken accessToken = null;
//트위터 인증 시도
if (token.equals(oauthToken)) {
try {
accessToken = twitter.getOAuthAccessToken(oauthToken, secret);
} catch (TwitterException e) {
e.printStackTrace();
System.out.println("트위터인증실패 : " + e);
}
twitter.setOAuthAccessToken(accessToken);
}
//간단하게 내 정보를 가져오자.
User statuses = twitter.getUserTimeline().get(0).getUser();
System.out.println(statuses);
statuses 을 찍어보시면 무수히 많은 정보를 던져 주고 있습니다. 이름,URL정보, 사진, 등등
이젠 여러분의 시스템에 맞게 정보를 요리하시면 될듯합니다.ㅋ