あんまり頻繁にやらないのでメモ。
■前提
- Twitter のアプリケーション登録は済んでいる
- Appsで
Create an app
済み。 - 各種トークン(
api-key
やaccess-token
)生成済み。
- Appsで
- SpringBoot を使う環境は整っている
- JDKのインストール
- STSの導入
なお、SpringBootの環境構築に関してはこっちの記事を参考にどうぞ。
SpringBootに入門するための助走本 - Qiita
■使用するもの
- SpringToolSuite4
- SpringBoot/MAVEN
- twitter4j と自分のツイッターアカウント。
■メモ
SpringBootプロジェクトを作成
依存関係はお好きに。
ぼくは普段、この辺を入れてます。
- Web
- PostgreSQL
- JDBC
- JPA
- Lombock
SpringInitializr で生成するだけなので、詳しくは省略。
pomに追記
twitter4j 公式ページ を参考にして、pom.xml
に dependency を追加。
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>[4.0,)</version>
</dependency>
これで MavenDependencies
に twitter4j-core-4.0.7
(現時点)が落ちてきました。
TwitterAPI認証情報の確認(※ 仕様変更あり)
開発者ページ に飛んで、Apps から作成済みのアプリ一覧を表示。
使用するアプリの Details
から詳細情報を表示。
KeyAndTokens
タブを表示して、以下の情報を確認します。
- Api-key
- Api-secret-key
Access-tokenAccess-token-secret
※だったんだけど、先日(2020-01-29)見に行ったら、アクセストークンのセキュリティが強化されてました。
現在は、アクセストークンとアクセストークンシークレットは、トークン生成時にしか表示できない仕様に変更されています。
なので、アプリケーション詳細を表示して確認、ではなく、確認したくなったらトークンを再生成する必要がある、が正しいです。
プロジェクトにtwitter4j.propertiesを追加
application.properties
が置いてある src/main/resources
の所に twitter4j.properties
を新規作成して、上記で確認した APIキー
と生成した アクセストークン
をそれぞれ設定します。
debug=true
oauth.consumerKey={api-key}
oauth.consumerSecret={api-secret-key}
oauth.accessToken={access-token}
oauth.accessTokenSecret={access-token-secret}
動作確認
取り敢えず適当なコードを書いて動作確認。
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.User;
@RestController
@RequestMapping("api/twt")
public class WebApiController {
private static final Logger log = LoggerFactory.getLogger(WebApiController.class);
private Twitter twitter;
@PostConstruct
private void ctor() {
this.twitter = new TwitterFactory().getInstance();
}
@RequestMapping("user")
public User user() throws Exception {
User user = twitter.verifyCredentials();
String userName = user.getName();
String displayName = user.getScreenName();
int fav = user.getFavouritesCount();
log.info("名前: {}", userName);
log.info("表示: {}", displayName);
log.info("すき: {}", fav);
return user;
}
}
ユーザ情報を取得して適当に返してみます。
http://localhost:8080/api/twt/user
にアクセスして動作確認。
無事に動いたのでおっけーです。
■参考情報
昨年から、Twitter開発アカウントの申請、と言う手順が必要になっています。
既存アプリの管理だけなら行けるけど、新規アプリ作成やなんかには申請が必要なようで。
Please apply for a Twitter developer account
You may continue managing your existing apps but if you would like to create new apps or use Twitter premium APIs, please apply for a developer account.
As a developer platform, our first responsibility is to our users: to provide a place that supports the health of conversation on Twitter. To continue to prevent misuse of our platform, we have introduced a few new requirements for developers.
なんかこんな感じのメッセージが出ます。
この辺の記事が参考になりますが、とにかく新しくアプリが作りたければ申請する必要があるようです。