Twitter4j사이트의 Code Example에 간단한 예제가 나와있어서 참고하면 되지만 너무 심플한 예제라 큰 도움은 되지 않습니다. 차라리 JavaDoc을 많이 보게 되더군요.
인증토큰 얻기
Twitter4J를 사용하려면 당연히 최신버전의 Twitter4J jar파일을 프로젝트에 추가하여 하고 해당 소스를 사용할때 당연히 import도 해야하지만 그런부분은 여기서는 생략하고 소스만 보겠습니다. ㅎ
final String CONSUMER_KEY = "발급받은 CONSUMER Key";
final String CONSUMER_SECRET = "발급받은 CONSUMER Secret 키";
Twitter twitter = new Twitter();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
RequestToken requestToken = null;
try {
requestToken = twitter.getOAuthRequestToken();
} catch (TwitterException e) {
}
//store requestToken.getToken() & requestToken.getTokenSecret()
//Retirect to requestToken.getAuthorizationURL()
위 코드를 통해서 토큰을 얻을 수 있습니다. requestToken.getToken()과 requestToken.getTokenSecret()에서 스트링타입의 토큰을 트위터로부터 받아오게 되고 사용자가 트위터사이트에서 인증을 허락한 뒤에 다시 사용해야 하므로 세션등에 저장해 둡니다. requestToken.getAuthorizationURL()는 트위터 인증URL에 토큰을 파라미터로 넘겨주는 주소로 다음과 같은 형태입니다.
http://twitter.com/oauth/authorize?oauth_token=인증토큰
위의 URL을 이용해서 유저를 리다이렉트 시키면 아래와 같은 화면이 나오게 됩니다.
제가 만들때는 구조상 아이프레임내에서 처리해야 했기 때문에 위 페이지를 아이프레임에서 띄웠습니다만 저 페이지에는 (window.top !== window.self)와 같이 페이지가 프레임에서 띄워졌는지를 검사하는 코드가 있고 프레임일 경우는 전체페이지에 띄우도록 수정해 버립니다. 이부분은 꼼수를 쓰면 막을수 있을지도 모르겠지만 프레임에서 띄우면 사용자가 URL을 볼수가 없기 때문에 트위터와 동일한 모양의 페이지를 만들어 놓고 아이디와 패스워드를 가로챌 수 있는 보안상의 문제가 있기 때문에 굳이 프레임에서 띄우지 않고 새창에서 인증이 진행되도록 하였습니다. OAuth도 인증과정은 유저에게 맡기기 때문에 URL을 사용자에게 표시해 주는 것은 중요합니다.
이제 사용자가 트위터사이트에서 해당 클라이언트의 접근을 허락할것인지 거절할 것인지를 선택합니다. 거절하게 되면 당연히 트위터의 인증을 하지못하게 되고 Allow를 하게되면 트위터가 사용자를 다시 Consumer사이트로 리다이렉트 시키게 됩니다.
http://리다이렉트URL?oauth_token=인증토큰
리다이렉트URL은 트위터 어플등록을 할 때 입력했던 URL을 이용해서 발급했던 인증토큰을 다시 파라미터로 붙혀서 보내주게 되고 파라미터명은 oauth_token입니다. 리다이렉트 페이지에서 해당 토큰을 다시 받아서 인증처리를 해주면 됩니다.
인증하기
Twitter twitter = new Twitter();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
String oauthToken = 파라미터로 받은 oauth_token
if (저장된token.equals(oauthToken)) {
try {
accessToken = twitter.getOAuthAccessToken(oauthToken, 저장된serectToken);
} catch (TwitterException e) {
}
twitter.setOAuthAccessToken(accessToken);
//store oauthToke & secretToken to DB
}
받아온 oauth_token값과 앞단계에서 발급받은 토큰의 값을 기뵤해서 값을 경우에 2개의 값(token, serect token)으로 accessToken을 만들어서 twitter객체가 OAuth권한을 얻도록 합니다. 여기까지 진행되면 twitter객체를 이용해서 해당 유저의 트위터를 이용할 수 있게 됩니다. 첫 토큰획득과 2번째 비교할때의 시간텀이 길어지게 되면 트위터에서 인증을 거부합니다.
일시적인 인증이 아니라면 Token과 Secret Token을 디비에 저장해 두면 다음에 사용자가 로그인 했을 경우에도 다시 트위터의 접근 권한을 자동으로 얻을 수 있습니다.
Twitter twitter = new Twitter();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
AccessToken accessToken = null;
accessToken = new AccessToken(저장된Token, 저장된SecretToken);
twitter.setOAuthAccessToken(accessToken);
위 코드처럼 2개의 토큰을 이용해서 twitter객체가 다시 인증된 상태로 만들면 됩니다. 이 twitter객체를 세션등에 저장해 놓고 계속 사용하면 됩니다. 그리고 트위터는 인증을 할때 유저의 스크린네임을 돌려주기 때문에 accessToken.getScreenName()를 이용하면 인증하면서 바로 스크린 네임을 얻을 수 있습니다.
트윗 가져오기
List<Status> statuses;
Paging page = new Paging();
page.count(20);
page.setPage(1);
try {
statuses = twitter.getHomeTimeline(page);
} catch (TwitterException e) {
}
for (Status status : statuses) {
//status.getId()
//status.getUser().getName()
//status.getUser().getScreenName()
//status.getUser().getURL()
//status.getText()
//status.getCreatedAt()
//status.getUser().getProfileImageURL()
//status.getSource()
}
페이징이 필요할때는 Paging객체를 만들어서 사용하면 되고 사용자의 타임라인은 getHomeTimeline을 이용하여 얻습니다. 각 트윗에 대한 정보는 status객체를 통해서 얻어낼수 있고 사용자 정보는 User객체를 통해서 추가적으로 얻을 수 있습니다. 멘션이나 Direct Message는 getMentions, getDirectMessages를 통해서 가져올 수 있습니다.
트윗작성하기
Status status = null;
try {
status = twitter.updateStatus(텍스트);
} catch (TwitterException e) {
}
트윗을 올리는 것은 아주 간단합니다. updateStatus메서드를 이용해서 텍스트를 전송하면 바로 트윗이 올라갑니다. Reply의 경우에는 twitter.updateStatus(텍스트, 리플라이할 트윗의 id); 와 같은 형태로 사용하면 됩니다.
이외에도 Twitter4j에서는 많은 기능을 제공하고 있고 거의 모든 트위터의 기능을 아주 쉽게 사용할 수 있게 잘 작성되어 있습니다. 저도 쓰는거만 만져보고 다 보지는 못했네요.
이 포스팅을 보고 JSP로 트위터 연동 구현중에 있습니다.
일단 좋은 정보 감사합니다~
지금 진행 상황은 인증을 거쳐 엑세스토큰까지 얻어내어 트윗에 성공하였고
스크린네임도 얻어낼 수 있습니다.
하지만 한번만 인증 시키고 다음부턴 토큰과 토큰시크릿을 통해
인증 절차 없이 접근하게끔 만들고자 하는데......
accessToken = new AccessToken(Token, TokenSecret);
System.out.println(accessToken);
엑세스토큰 생성 후 출력 해보면 AccessToken{screenName='null', userId=0}
이와 같이 null 과 0 으로 되어
twitter.setOAuthAccessToken(accessToken);을 하여도 당연 인증이 되지
않습니다... 제 생각엔 accessToken을 제대로 생성하지 못하여 그런것 같은데...문제가 뭔지 모르겠습니다 ㅠ
해결했습니다..
저장 해두고 두고두고 쓰는 Token 과 TokenSecret을
리퀘스트토큰의 토큰과 시크릿을 저장했는데....
엑세스토큰의 토큰과 시크릿 이네요...
위 글에는 아래와 같이 되어있어서 오해의 소지가 있습니다.
Twitter twitter = new Twitter();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
String oauthToken = 파라미터로 받은 oauth_token
if (저장된token.equals(oauthToken)) {
?? try {
?? ? ? accessToken = twitter.getOAuthAccessToken(oauthToken, 저장된serectToken);
?? } catch (TwitterException e) {
?? }
?? twitter.setOAuthAccessToken(accessToken);
? ? //store oauthToke & secretToken to DB
}
여기서 저장된Token과 저장된TokenSecret은 분명
리퀘스트토큰의 토큰과 시크릿이죠...
엑세스토큰의 토큰과 시크릿을 DB에 저장해두고
두고두고 사용해야 하는데...
리퀘스트로 착각했었습니다 ㅠㅠ
String key1 = accessToken.getToken();
String key2 = accessToken.getTokenSecret();
이렇게 두개를 저장해두고 나중에
AccessToken accessToken = new AccessToken(key1, key2);
이렇게 해야 엑세스 토큰이 생성 됩니다.
다행이네요.
어디가 문제인지 고민을 하고 있었는데 해결을 하셨군요. ^^;
토큰주고 받는게 은근히 많이 헷갈려서요.. ㅎ
이렇게 해결하신 결과까지 다시 공유해주셔서 감사합니다. ^^
Outsider님 정말 많은 도움이 되었습니다 저도 위에 장승제님과 똑같은 문제가 있었는데,,ㅎㅎ
인증이 끝나고 다음부터 인증할때부터는 accessToken의 token과 secretToken을 사용해야 한다는것이 본문에 추가된다면 좀 더 다른 분들이 도움될것 같습니다.ㅎㅎ 아무튼 정말 감사드립니다.
도움되셨다니 다행이네요... ㅎ
저도 나중에 다시할려면 까먹어서요.. ㅎㅎㅎ
# AccessToken accessToken = null;
# accessToken = new AccessToken(저장된Token, 저장된SecretToken);
이부분에서 token과 secretToken이을 사용해야 한다는 부분을 좀더 명시적으로 적어주는 것이 좋다는 말씀이신가요? ^^
accessToken까지 얻었습니다.
궁금한건 사용자가 다른곳에서 트윗 id, pw를 입력하여 이 사용자가 twitter사용자다라는 것을 어떻게 알수 있습니까?
다른 곳이라는게 어디를 말씀하시는지 잘 모르겠습니다.
트윗아이디랑 pw는 트위터 사이트에서만 입력합니다. 서드파티사이트에서 트위터id/pw입력해서 로긴하는건 deprecate된걸로 알고 있습니다.
만드시는 사이트에서 연동하시면 저장된 엑세스토큰이 있으면 트위터 인증된 사용자고 없으면 트위터 연동 안된것으로 하시면 될것 같은데요.
안녕하세요. 예제대로 따라해보니 잘 되네요. 감사합니다.^^
그런데 한가지 궁금한 점이 있어서 여쭤봅니다.
예제대로 accessToken의 token과 secretToken 을 디비에 저장해서 불러오면
간편하더라구요. 현재 디비에 여러사용자의 accessToken의 token과 secretToken이
저장되어있는데 for문을 돌려서 디비에 있는 전체 사용자를 로그인하면서 그들의 정보를 가져오려고 하는데요.
첫번째 사용자의 정보는 가져오는데 두번째 사용자 정보를 가져오지 못하고 다음과 같은 에러메세지를 뿌립니다. => connection still allocated
아마 첫번째 사용자의 커넥션이 끊기지 않아서 인거 같은데. 어떻게 커넥션을 끊을 수 있는지 혹시 아시나해서요^^
그부분은 제가 못 겪어봐서 잘 모르겠는데요..
http://groups.google.com/group/twitter4j/browse_thread/thread/b4c1748e5f35e1f1?pli=1
여기 나온 문제랑은 좀 다른건가요?
제가 oauth 스펙에 대해서 자세히는 모르는데 그냥 드는 생각은 컨슈머가 저장된 토큰들을 사용해서 사용자들의 권한을 자유롭게 획득한다는 것은 먼가 이상한것 같은데요...
주위에 아시는 분들이 있으신가 한번 물어봐야겠습니다.
outsider님 혹시
SEVERE: The web application [/psychology] created a ThreadLocal with key of type [twitter4j.ParseUtil$1] (value [twitter4j.ParseUtil$1@4865ee]) and a value of type [java.util.HashMap] (value [{EEE MMM d HH:mm:ss z yyyy=java.text.SimpleDateFormat@848bfe1c, EEE MMM dd HH:mm:ss z yyyy=java.text.SimpleDateFormat@42ee54}]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
Sep 1, 2010 10:59:49 AM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
이런 메세지 보신적 있으신가요?
twitter4j를 쓰고 나서 서버가 다운되고 있습니다. 메모리 누수가 일어나고 있는지....
저와 같은 증세가 있으신분 있으시면 ㅠㅠ 같이 해결방법을 찾아요 ㅠㅠ
아~ 제가 twitter4j를 서비스로 쓴게 아니고 잠시 운영만 하고 내렸던 거라서 메모리릭 관련해서는 겪어 보지 못했습니다.
도움 못드려 죄송합니다. ㅠㅠ
사이트 방문하게 되어 반갑습니다.
저도 자동인증을 하려고 하는데요..
너무 막히네요.. ㅠㅠ
사이트에서 많은 도움이 되었지만 실행이 되지 않는 부분이 있어 여쭙고자합니다
우선 처음에 requestToken = twitter.getOAuthRequestToken();
이 소스를 가지고 나온 토큰값으로
accessToken = new AccessToken(저장된Token, 저장된SecretToken);
저기 저장된 토큰에 넣어주는건가요? 저도 윗분처럼 null이랑 0이 나와서요..
더욱이 저는 저 토큰값으로 넘어가는 url 에서 더이상 토큰값이 넘어오지 않고
제가 써넣은 사이트로 가지않고 로그인 후에 이상한 사용자 번호가 나옵니다..
ㅠㅠ
흠... 일단 저도 위의 글을 쓴지 6개월 정도 지났고 계속 사용하고 있는 것은 아니기 때문에 트위터측의 정책이나 OAuth의 스펙이 달라지거나 twitter4j의 처리방식이 달라질 경우에 대해서는 모르고 있습니다.
약간 변화는 있는것 같긴 하지만 다른 분들이 해결하신 것들을 보면 큰 변화는 없는것 같기는 합니다.
url로 리다이렉트하는 부분은 저희가 하는게 아니라 트위터해서 처리해주는 부분입니다. 그게 제대로 수행이 안된다는 것은 트위터로 리다이렉트를 시킬때 값을 잘못넘겨주었거나등의 이유로 리다이렉트를 제대로 되지 않는것 같습니다. 등록값등을 다시 확인해 보셔야 할것 같습니다.
저장된 토큰에 대해서는 말씀하신 부분이 받습니다. 제가 작성할때는 리퀘스트 토큰과 엑세스토큰의 값이 같은 것으로 이해하고 있었습니다만 제가 잘못이해했거나 스팩의 변동이 있었던 것인지 윗분의 댓글을 보면 리퀘스트토큰이 아닌 엑세스토큰에서 얻은 토큰과 세크릿 토큰으로 사용해서 해결했다는 부분이 있습니다. 그렇게 적용해서 테스트 해보셔야 할것 같습니다.
네 알겠습니다..
아무튼 많은 도움 되었습니다
감사합니다.
예 해결하실수 있길 바라겠습니다. ^^;;
질문이 있습니다.
updateStatus("텍스트"); 에서
트위터에 글은 올라오는데 입력한 텍스트가 url인 경우
트위터에서 url를 링크로 처리하게 하는 방법을 알고 계시면 알려주시면 감사하겠습니다.
트위터에는 text만 날라갑니다. 그냥 URL을 입력해서 보내시면 URL에 링크를 붙히는 것은 클라이언트의 몫인 것으로 알고 있습니다. 보낼때 a태그등을 붙혀줄 필요는 없습니다.
AccessToken accessToken = new AccessToken("157355121-gkNayKj5UaJkRYzG1KRWw9TANrYxARrmDA2t0XOL","wkMogxidWiOe0hv2KLRg5lXEpNH0OvjoPT16ebtuC4");
이렇게 어세스 토큰과 어세스 시크릿 값을 얻어서 위에 처럼 재인증할려고하는데
null 나와서
ㅠ,ㅠ;; 이유를 모르겠습니다
최근 한두달 사이에 null이 나온다는 질문이 많아진것으로 보아서 twitter4j나 트위터 Oauth의 버전변경으로 인한 바뀐점이 있는 것으로 생각되고 있습니다. 한번 테스트해서 확인해 보고 싶은데 그럴 여유를 갖지 못하고 있네요.
윗분중에 해결하신분을 보면 넘겨주는 토큰값에서 달라진 점이 있는것 같습니다. 제가 테스트해보지 못한 부분이라 명쾌한 답변을 드리지 못하겠네요.
감사합니다^^
좋은하루보내세요~
해결되시면 한번 공유해주세요.. 저도 나중에 다시테스트 해봐야할것 같네요. ^^
문수영님께서 올린글처럼 저도 오류가 났었는데 해결방법이 있어서 올립니다.
AccessToken accessToken = new AccessToken("AccessToken","AccessSecretToken");의 경우 저도
null과 0이뜹니다. 인터넷으로 찾아본 결과
twitter.setOAuthAccessToken("AccessToken","AccessSecretToken");
이런식으로 변경하면 잘 되네요 !!!!
TwT님 감사드립니다. API 사용이 달라졌나 보군요.
비슷한 문의가 계속 있어서 한번 다시해봐야지 하면서 못하고 있었는데 이렇게 해결책을 알려주셔서 감사합니다.
Reply의 경우에는 twitter.updateStatus(텍스트, 리플라이할 트윗의 id); 의 형태로 넘어간다고 했는데 스트링밖에 들어가지가 않네요.. 리플라이할 아이디 값은 어떻게 처리해야 할까요...
버전이 올라가서 그런것 같은데요 어느 버전을 쓰시는지 모르겠지만 최신 버전의 API를 보면 ( http://twitter4j.org/en/javadoc/twitter4j/api/StatusMethods.html#updateStatus(twitter4j.StatusUpdate) ) updateStatus의 파라미터로 넘기는 StatusUpdate객체에 inReplyToStatusId에 담아서 넘기면 되지 않을까 싶습니다. 테스트까진 못해봐서요 ㅎ
StatusUpdate객체에 inReplyToStatusId에 status ID 를 넣으면 다 널포인트가 뜨더라구요..
setinReplyToStatusId?도 똑같구요..
흐음.. 리플라이부분을 어떻게 해결해야 할지 막막하네요...
리플라이 리스트 불러오는것도 못하고 있는데ㅠ_ㅠ
제가 테스트를 해볼상황은 아니라서요...
문서 상으로는 될것 같은데 statusID를 넣으면 널포인트 오류가 뜬다는건가요? 그건 다른부분의 오류가 아닌가 싶은데요.
안녕하세요. 질문이 있습니다.
트위터 로그인 사이트로 가기전에 request 토큰을 저장하고
리다이렉트 받은후에 저장된 request 토큰 정보를 가지고 비교를 해야 하잖아요.
그런데 이 저장하는 부분이 제가 session으로 저장을 해봤는데 트위터 로그인 사이트를 방문한후 리다이렉트를 받으니깐 session이 지워 지더라구요.
원래 다른사이트 갔다 오면 세션이 지워 지는 것인가요? 결국 DB에 저장할수 밖에 없는건지요?
감사합니다.
자답: 출발은 localhost로 하고 redirect페이지는 127.0.0.1로 받아서 다른 사이트로 알고 브라우저에서 세션을 전달해 주지 않은 문제였습니다.
감사합니다.
세션은 일반적으로 유지되어야 한다고 답변할려고 했더니 이미 해결하셨군요. ^^ 보통 질문하고 나서 답을 알게되는 경우도 많지요. ㅎㅎㅎ
아웃사이더님 감사합니다.
제가 혹시 이 글을 기초로 해서 트위터 인증을 마쳤는데요.
트랙백으로 게시물을 올려도 될런지요?(제가 만든 소스공개 수준입니다.)
감사합니다.
예 괜찮습니다. ^^ 올리시면 알려주세요 ㅎㅎㅎ
질문입니다. 로컬에서 글쓰기시 글이 잘써지는데.
개발서버에서 글쓰기를 하면 아예 통신이 되지 않고있어요~
api.twitter.com 을 DNS 서버에 등록하였는데
twitter4j는 다른 api를 사용하는지 알수 있을까요?
twitter4j.org 를 등록해줘야 할지...궁금합니다..
따로 자신들의 도메인을 사용할것 같지는 않은데요.(저 글이후에 버전업이 많이 되어서 최신 기능들은 잘 모르긴 합니다.) 서버에서 api.twitter.com으로 막혀있는건 아닌가요?
인증은 잘 되시는건가요? 서버 바꿀때 SNS 인증은 콜백URL도 영향을 끼쳐서요...
서버쪽에서 로그를 찍어서 어느부분에서 막히는건지 찾아야 할것 같습니다.
api.twitter.com 이도메인은 DNS에 등록해서 열려있습니다.
글구 서버 바뀌면서 callback URL도 변경해주었구요~
초기에는 잘되다가 몇일전부터 갑자기 안되어서요.
아..막막하네요...ㅠ.ㅠ
그러면 딱히 안될 이유는 없어보이는데요. 더군다나 초기에는 잘 되셨다면.... 개발하다 보면 자주 호출을 하게 되서 스팸으로 감지되서 트위터측에서 차단하기도 하는데 일시적일뿐 그리 오래 차단하지는 않는데요. OAuth단계중 어느 단계에서 막히는 것인지 확인하는 것도 디버깅 하시는데 도움이 되실것 같은데요.
로그보면 아래와같은 에러가 납니다./이런에러 보신적 있으신가요?
[11. 9. 15 17:20:45:539 KST] 00000028 SystemOut O TwitterException : Relevant discussions can be on the Internet at:
http://www.google.co.jp/search?q=9494668e or
http://www.google.co.jp/search?q=72d6e0f0
TwitterException{exceptionCode=[9494668e-72d6e0f0 9494668e-72d6e0e8], statusCode=-1, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version=2.2.5-SNAPSHOT(build: 5f9c44cd0e0c1972f8d17653a226b9b6a3392ac2)}
현재는 twitter4j는 쓰고 있지 않아서요... 익센션에 대한 trace 는 없나요? 저 에러만으로는 얻을 정보가 거의 없네요.
저도 지금 이와 동일한 에러가 납니다. 혹시 왜 그러는지 아시는지요?ㅜㅜ
위에 답변했던 대로 저 메시지만으로는 제가 겪어보지 못해서 확인하기가 어렵네요.
잘 이해 안가는게 있어서.
twitter에서 CallbackURL 을 통해서 token을 async로 넘겨주는건가요?
adroid app에서 바로 token을 받는 방법은 없는건가요?
반드시 중간에 웹서버가 끼어들어야하는지 궁금합니다.
예를 들면, callbackurl?oauth_token=xxxxx 이면, cgi나 머 그런걸짜서
웹서버에서 저장하고 있다가. apps이 나중에 그 주소를 access해서 token을 가져와야하는건가요?
async로 넘겨주는건 아닙니다. 제가 질문을 잘 이해못했는데.. 서버가 토큰을 받아서 사용자에게 주면 사용자가 트위터로 토큰을 가져가서 인증받아오는 겁니다.
근데 이건 웹을 기반으로 한것이고 트위터에 가시면 선택에 클라이언트 인증이 있습니다. 제가 클라이언트앱은 만들어보지 않아서 정확치는 않지만 클라이언트로 앱을 등록하시면 사용자가 PIN번호로 입력하면 되기 때문에 웹서버가 필요없는걸로 알고 있습니다.
~님 블로그 보구 참고 많이 하고 있는데요...
인증하고 글 올리기할때요...twitter.updateStatus(',,,,,') ; 이런식으로 넘기면 올라가는데요..
이때 보통 다른 사이트들 보면 트윗하기 아이콘 누르면 올라갈 글하고 URL같은게 팝업으로 뜨면서 확인 시켜주고 다시 거기서 다시 트윗하기 버튼 누르면 글이 등록되잖아요...
근데 저는 저는 그 팝업이 안나오구 바로 등록 되버리는데 이게 맞는건가여~?
팝업창으로 띄우고 글 등록은 어떻게 하나요~?계속 헤매고 있어서요..ㅠㅠ
oauth가 인증되었으면 인증이 완료된 것이므로 글이 바로 올라가는게 맞습니다.
다른 사이트의 경우 내부 구현에 따라 다를 수가 있어서 확답할수는 없지만 대개는 oauth를 통한 인증이라기 보다는 트위터의 글등록 창을 뛰운 것이 아닐까 생각합니다. oauth는 미리 인증을 받아놓은걸 저장하고 사용한다면 팝업은 인증없이 트위터쪽에 등록할 글을 전달해서 등록하는 방법일겁니다.(API도 계속 업글되고 있고 트위터 인증 쓴지가 오래되서 확인해보진 않았습니다. 아마 트위터가 로그인되지 않다면 팝업에서는 로그인페이지가 나오지 않을까 싶네요.)
제가 생각한 방법이 많다면 http://blog.outsider.ne.kr/504 이 글을 확인해 보시면 참고가 될듯합니다.
정말 감사합니다..^^ 빠른 답변...
해보진 않았는데 일단 인증 방식과 그런 파라메터 방식이 따로 되어 있다는걸 안것만으로도 넘 감사해요~ㅎ
아직 할게 많은데 일단 그런 구조인줄 알았으니 담당자한테 말해줘야 겠네요..ㅎㅎ
~님은 정말 천재신가봐요...^^;;ㅋ
그럴리가요. 평범한 개발자일 뿐입니다. 댓글만 보고 말한거라 제대로 짚은건지도 자심없고요. 파라미터 타입은 보통 인증까지 구현하기 어려운 경우를 위해서 사용합니다. ^^
도움 많이 받았습니다.
twitter4j.org 에 접속이 안된지가 한참 된것 같은데요,
혹시 주소가 바꼈나요?
접속이 안되시나요? http://twitter4j.org/en/index.html 지금은 접속이 잘 되는데요.
관리자만 볼 수 있는 댓글입니다.
예?
관리자만 볼 수 있는 댓글입니다.
현재 twitter4j가 버전이 올라가서 이글과 꽤 달라지긴 했지만 결국 사용하는건 트위터의 API이므로 자세한 내용은 https://dev.twitter.com/docs/api/1.1 를 참고하셔야 합니다. 아이디로 설정해서는 가능하지만 타임을 지정해서는 안되는 걸로 알고 있습니다. 특정 아이디를 지정하지 않고 검색 API 요청을 하는 경우 일정기간이 지나면 API로 반환해주지 않습니다.(API에 따라 다른걸로 알고 있습니다만.)
twitter.getOAuthAccessToken 메소드 호출할 때
첫 번째 인자:oauth_token
두 번째 인자: oauth_verifier
이런식으로 호출해야지 제대로 되고 나머지는 에러가 나네요... ㅠ.ㅠ
왜 그러는지는 잘 모르겠습니다.
현재 API문서에 나온대로 하셨는데 저 파라미터 타입외에는 모두 오류가 난다는 건가요? 흠.. API가 많이 달라지고 안쓴지 오래되서 어떤 문제인지 추측하기 어렵군요.
안녕하세요..혹시라도 뒤늦게 이 글을 보실 분을 위해 댓글을 추가합니다.
API 가 조금 바뀐 것같습니다.
액세스 토큰을 얻기 위해선
getOAuthAccessToken(RequestToken requestToken, java.lang.String oauthVerifier)
첫번째 인자로 토큰을 두번째 인자로 리다이렉트로 가는 페이지에서 받는 oauthVerifier 변수가 있는데 이걸 넣어주시면 됩니다; 저는 twitter4j 4.0.4 버젼씁니다..
마지막 댓글이 2013년이로군요 ;; ㅋㅋㅋㅋ 흠.. 이럴때 매번 신기합니다.
참고링크 : http://twitter4j.org/javadoc/twitter4j/auth/OAuthSupport.html
너무 오래된 글인데 API 바뀐건 댓글주시는 분을 통해서 어느정도 알고 있었지만 다시 테스트해 볼 시간은 없었네요. 이렇게 최신 내용을 알려주셔서 감사합니다. ㅎㅎ 새로 써보려는 분들에게도 많은 도움이 되겠네요.