자바로 트위터 API를 사용해서 트윗하기를 해봤다.
대부분 예시가 파이썬 기준이라, 파이썬으로도 하긴 했지만 자바로도 하고싶었고, 해야했다.
미니 프로젝트라고 하기도 민망하지만 어쨌든 입력한 키워드들을 받아서 서버로 받아와 100개의 트윗을 생성할 수 있도록하는 토이 프젝을 하려했다.(나중에는 트윗 개수도 설정해서 트윗할 수 있도록 발전시켜야지. 는 우선 30일까지 완성해야지.)
가장 큰 문제는 gradle을 처음 써봐서 설정하는데 문제가 있었고, API를 사용하는 것의 문제였다.
- 트위터 개발자 계정을 생성해서 Api Key 및 token을 생성한다.
- 트위터 라이브러리 다운받기
- API 사용하기
https://twitter4j.org/ko/index.html
해당 사이트로가면 라이브러리를 다운 받을 수 있다.
다운 받은 파일을 라이브러리에 추가한다. gradle에서는 build.gradle에 dependencies 추가를 해주면 사용할 수 있다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation files('libs/twitter4j-core-4.0.7.jar')
}
라이브러리 추가 한 후, 우선 테스트를 해야해서 테스트 자바 파일을 만들었다.
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(TwitterTest.class, args)) {
TwitterTest m = ctx.getBean(TwitterTest.class);
// twitter 객체 초기화 + consumer 인증 set
twitter = TwitterFactory.getSingleton();
//자신의 twitter 봇의 api key를 입력
twitter.setOAuthConsumer("API KEY","SECRET API KEY");
try {
//토큰 가져오기
requestToken = twitter.getOAuthRequestToken();
} catch (TwitterException e) {
e.printStackTrace();
}
System.out.println(requestToken.getAuthorizationURL());
//위의 URL을 통해서 받아온 토큰을 입력한다.
finalAccessToken = new AccessToken("accesstoken","secrettoken");
twitter.setOAuthAccessToken(finalAccessToken);
try {
// 계정명 획득
User user = twitter.verifyCredentials();
System.out.println(user.getScreenName());
// 계정에 트윗 등록
String msg = "트윗할 내용입력";
Status status = twitter.updateStatus(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
이렇게 작성해놓으면 매번 토큰을 받아서 인증하지 않아도 properties 파일에 등록한 후에 토큰 및 api key들을 가져와서 바로바로 등록하여 쓸 수 있다.