search
LoginSignup
9

More than 3 years have passed since last update.

posted at

updated at

SpringBoot/Maven+Twitter4jの環境を作るメモ。

あんまり頻繁にやらないのでメモ。

■前提

  • Twitter のアプリケーション登録は済んでいる
    • Appsで Create an app 済み。
    • 各種トークン(api-keyaccess-token)生成済み。
  • SpringBoot を使う環境は整っている
    • JDKのインストール
    • STSの導入

なお、SpringBootの環境構築に関してはこっちの記事を参考にどうぞ。
SpringBootに入門するための助走本 - Qiita

■使用するもの

■メモ

SpringBootプロジェクトを作成

依存関係はお好きに。
ぼくは普段、この辺を入れてます。

  • Web
  • PostgreSQL
  • JDBC
  • JPA
  • Lombock

SpringInitializr で生成するだけなので、詳しくは省略。

pomに追記

twitter4j 公式ページ を参考にして、pom.xml に dependency を追加。

pom.xml

      <dependency>
           <groupId>org.twitter4j</groupId>
           <artifactId>twitter4j-core</artifactId>
           <version>[4.0,)</version>
      </dependency>

これで MavenDependenciestwitter4j-core-4.0.7 (現時点)が落ちてきました。

TwitterAPI認証情報の確認(※ 仕様変更あり)

開発者ページ に飛んで、Apps から作成済みのアプリ一覧を表示。

WS000109.JPG

WS000975.JPG

使用するアプリの Details から詳細情報を表示。

KeyAndTokens タブを表示して、以下の情報を確認します。

  • Api-key
  • Api-secret-key
  • Access-token
  • Access-token-secret

※だったんだけど、先日(2020-01-29)見に行ったら、アクセストークンのセキュリティが強化されてました。

現在は、アクセストークンとアクセストークンシークレットは、トークン生成時にしか表示できない仕様に変更されています。
なので、アプリケーション詳細を表示して確認、ではなく、確認したくなったらトークンを再生成する必要がある、が正しいです。

プロジェクトにtwitter4j.propertiesを追加

application.properties が置いてある src/main/resources の所に twitter4j.properties を新規作成して、上記で確認した APIキー と生成した アクセストークン をそれぞれ設定します。

twitter4j.properties
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 にアクセスして動作確認。

WS000107.JPG

無事に動いたのでおっけーです。

■参考情報

昨年から、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.

なんかこんな感じのメッセージが出ます。

この辺の記事が参考になりますが、とにかく新しくアプリが作りたければ申請する必要があるようです。

新しくなった Twitter Developer ポータルに登録してみる - Qiita

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9