Twitter4J 2.2.5から公式の画像アップロードAPI(POST statuses/update_with_media)がサポートされていたようで、とても簡単に使えるようになっていました。
final Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); twitter.setOAuthAccessToken(new AccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)); final StatusUpdate status = new StatusUpdate("画像投稿のテスト"); status.media(new File("image.jpg")); twitter.updateStatus(status);
ファイルではなくて入力ストリームを引数にとるものもあったので、Webにアップロード済みの写真やメールの添付ファイルも処理できます。第1引数で指定するファイル名がどこで使われるのかが分かりませんでした。
status.media("image.jpg", new URL("http://example.com/image.jpg").openStream());