Twitter APIとアプリを使用するためにTwitter開発者アカウントへの登録
ここはまるっとは割愛します。その年の最新情報を参照して登録しましょう。
申請時に利用目的を英語で書く必要がありますが、Goolgle翻訳で翻訳すれば問題なしです。
https://qiita.com/kngsym2018/items/2524d21455aac111cdee
アプリケーションの作成
晴れてアカウント取得できれば次はアプリケーションを作成します。
App 作成画面
Dashboard から Create Appボタンをクリックして以下のようにアプリケーションの作成画面を表示しましょう。
Consumer Keyのご案内
アプリケーションの作成完了画面でConsumerKeyが表示されます。
Twitter4jの設定ファイルの説明も後述してありますが、
oauth.consumerKeyがAPI Key
oauth.consumerSecretがAPI Secret Keyになります。
プロパティ名と合わないのでややこしいです。
Access tokenの生成
アプリ一覧
無事にアプリケーションが作成されたら次はAccess tokenを取得する必要があります。
ただその前にTokenを作る前にアプリケーションの権限を変更する必要があります。
左側のメニューからOverviewをクリックしてアプリの一覧を表示しましょう。
アプリに対応する歯車アイコンをクリックしてください。
App Permissionsの変更
アプリ詳細のSettingsタブ
これ、ほんと割と忘れがちなのですが、アプリケーションの権限を変更しておかないとTweetできないです。以下の画面でEditをクリックしてアプリケーション権限を編集しましょう。
アプリケーション権限の編集
Read and Write
かRead + Write + Direct Messages
を選択して保存してください。
ちなみに変更するとTokenの再作成が必要です。
(後で変更して、Tokenを再作成し忘れてRead-only application cannot POST
エラーが発生するというのが割とお約束のパターンかと思います。)
アプリ詳細のKey And Tokenタブ
いよいよアプリ詳細のKey And TokenタブでTokenを作成します。
ここではConsumerKeyの再作成や、Access tokenの生成/再作成が可能です。
Access token & secret のGenerateをクリックするとtokenが作成されます。
Access Tokenダイアログ
これは名前が設定ファイルと対応しているのでわかりやすいですね。
oauth.accessTokenがAccess Token
oauth.accessTokenSecretがAccess Token Secretとなります。
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 サンプルソース
Error Tips
Read-only application cannot POST
権限がない場合に発生します。
App PermissionsがRead-onlyでないことを確認してください。
コメント