[2021年版]Spring MVCでTwitter4j(Twitter API)を使用してツイートする方法

システム開発Tips

Twitter APIとアプリを使用するためにTwitter開発者アカウントへの登録

ここはまるっとは割愛します。その年の最新情報を参照して登録しましょう。
申請時に利用目的を英語で書く必要がありますが、Goolgle翻訳で翻訳すれば問題なしです。
https://qiita.com/kngsym2018/items/2524d21455aac111cdee

アプリケーションの作成

晴れてアカウント取得できれば次はアプリケーションを作成します。

App 作成画面

Dashboard から Create Appボタンをクリックして以下のようにアプリケーションの作成画面を表示しましょう。
file

Consumer Keyのご案内

アプリケーションの作成完了画面でConsumerKeyが表示されます。
Twitter4jの設定ファイルの説明も後述してありますが、
oauth.consumerKeyがAPI Key
oauth.consumerSecretがAPI Secret Keyになります。
プロパティ名と合わないのでややこしいです。
file

Access tokenの生成

アプリ一覧

無事にアプリケーションが作成されたら次はAccess tokenを取得する必要があります。
ただその前にTokenを作る前にアプリケーションの権限を変更する必要があります。

左側のメニューからOverviewをクリックしてアプリの一覧を表示しましょう。
アプリに対応する歯車アイコンをクリックしてください。
file

App Permissionsの変更

アプリ詳細のSettingsタブ

これ、ほんと割と忘れがちなのですが、アプリケーションの権限を変更しておかないとTweetできないです。以下の画面でEditをクリックしてアプリケーション権限を編集しましょう。
file

アプリケーション権限の編集

Read and WriteRead + Write + Direct Messagesを選択して保存してください。
ちなみに変更するとTokenの再作成が必要です。
(後で変更して、Tokenを再作成し忘れてRead-only application cannot POSTエラーが発生するというのが割とお約束のパターンかと思います。)
file

アプリ詳細のKey And Tokenタブ

いよいよアプリ詳細のKey And TokenタブでTokenを作成します。
ここではConsumerKeyの再作成や、Access tokenの生成/再作成が可能です。
Access token & secret のGenerateをクリックするとtokenが作成されます。
file

Access Tokenダイアログ

これは名前が設定ファイルと対応しているのでわかりやすいですね。
oauth.accessTokenがAccess Token
oauth.accessTokenSecretがAccess Token Secretとなります。
file

twitter4j.properties の設定

設定ファイルに記述を追加してください。

debug=false

oauth.consumerKey=アプリ作成時に表示
oauth.consumerSecret=アプリ作成時に表示
oauth.accessToken=アプリ作成後生成する
oauth.accessTokenSecret=アプリ作成後生成する

実装(Java - Spring MVC)

Spring MVCでリクエストを受けてツイートする簡易なサンプルです。
全ソースはGithubにあげているので参考にしてみてください。

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import twitter4j.TwitterException;
import twitter4j.TwitterFactory;

@Controller
public class TweetController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {
        return "tweet";
    }

    @RequestMapping(value = "/tweet", method = RequestMethod.POST)
    public String tweet(@RequestParam("message") String message) throws TwitterException {
        TwitterFactory.getSingleton().updateStatus(message);
        return "tweet-compleat";
    }
}

Github サンプルソース

re3assist/spring-mvc-twitter4j-sample
This is a sample program that uses Twitter4j with Spring MVC. - re3assist/spring-mvc-twitter4j-sample

Error Tips

Read-only application cannot POST

権限がない場合に発生します。
App PermissionsがRead-onlyでないことを確認してください。

フォローお願いします!

コメント

タイトルとURLをコピーしました