はじめに
TwitterAPIのv2が発表され、キャッチアップのために触ってみることにした。
その際にAPIクライアントを twittered を利用するようにした。
twittered
Java製のTwitter API用のAPIクライアント。
公式サイトでも利用を促している。
試したバージョンは 2.6
。
v1.x も v2 も両方対応している。
更新頻度については高めですが、日本語の解説などは特に、見つからない。
導入方法
Readmeの Code samples
を参考にした。
サンプルコード
@Component
public class Twitter {
private static final String OAUTH_AUTHENTICATE_URL = "https://twitter.com/oauth/authenticate?oauth_token={{oauth_token}}";
private static final String PLACE_HOLDER_OAUTH_TOKEN = "{{oauth_token}}";
@Value("${client.twitter.api-key:}")
private String apiKey;
@Value("${client.twitter.api-secret-key:}")
private String apiSecretKey;
@Value("${client.twitter.callback-url:}")
private String callbackUrl;
/**
* TwitterClientを生成する<br>
*
* @return TwitterClient
*/
public TwitterClient createClient() {
return
this.createClient(
new TwitterAccessToken(""),
new TwitterAccessTokenSecret(""));
}
/**
* TwitterClientを生成する<br>
*
* @param accessToken Twitterのアクセストークン
* @param accessTokenSecret Twitterのアクセストークンシークレット
* @return TwitterClient
*/
public TwitterClient createClient(
TwitterAccessToken accessToken,
TwitterAccessTokenSecret accessTokenSecret) {
return
new TwitterClient(
this.createCredentials(
accessToken.value(),
accessTokenSecret.value()));
}
/**
* RequestTokenを取得する<br>
*
* @return RequestToken
*/
public RequestToken getRequestToken() {
var client = this.createClient();
return client.getOauth1Token(this.callbackUrl);
}
/**
* 認証URLを取得する<br>
*
* @param requestToken RequestToken
* @return 認証URL
*/
public String oauthAuthenticate(RequestToken requestToken) {
return OAUTH_AUTHENTICATE_URL.replace(PLACE_HOLDER_OAUTH_TOKEN, requestToken.getOauthToken());
}
/**
* RequestTokenを取得する<br>
*
* @param requestToken RequestToken
* @param pinCode
* @return RequestToken
*/
public RequestToken getOAuth1AccessToken(RequestToken requestToken, String pinCode) {
var client = this.createClient();
return client.getOAuth1AccessToken(requestToken, pinCode);
}
/**
* Twitterへ投稿する<br>
* <pre>POST statuses/update</pre>を実行し、Twitterの投稿IDを返却します<br>
*
* @param client TwitterClient
* @param message Twitterへの投稿内容
* @return Twitterの投稿ID
*/
@Async
public CompletableFuture<String> postTweet(TwitterClient client, String message) {
return
CompletableFuture
.supplyAsync(() -> client.postTweet(message))
.thenApply(Tweet::getId);
}
private TwitterCredentials createCredentials(String accessToken, String accessTokenSecret) {
return
TwitterCredentials.builder()
.accessToken(accessToken)
.accessTokenSecret(accessTokenSecret)
.apiKey(this.apiKey)
.apiSecretKey(this.apiSecretKey)
.build();
}
}
おわりに
Twitter APIの利用の申請方法などは割愛したが、1日で利用できた。
twitterdの書き味も特に不便はなかった。