こんにちは、プログラマです。
tmhOAuthで画像付きのツイートをする方法が、意外とまとまっていなかったので、まとめてみました。
tmhOAuthとは?
Twitter APIを扱うオープンソースライブラリです。
 tmhOAuth.phpのみで機能が使えるので導入が簡単です!
 Apache v2.0ライセンスです!
 なので、使用する場合は、下記のような文言を記す必要があります。
 例「このサイトでは、Apache 2.0ライセンスで配布されている製作物が含まれています。」
ダウンロードはこちらから:themattharris/tmhOAuth · GitHub
tmhOAuthで画像付きのツイートの最重要ポイント
画像をアップロードするには、media/uploadを使うこと。
 update_with_mediaは非推奨なので使わない。
twitterへのリクエストは必ず2回発生すること。
 media/uploadへ画像を送信。
 ↓
 statuses/updateで画像投稿IDとつぶやきを送信。
ざっくり手順
1.ツイッターライブラリの準備をします
| 1 2 3 4 5 6 7 8 9 |     $twitter = new tmhOauth(         array(             "consumer_key"		=> $consumer_key,             "consumer_secret"		=> $consumer_secret,             "token"			=> $token,             "secret"			=> $secret,             "curl_ssl_verifypeer"	=> false,         )     ); | 
2.画像の準備をします
| 1 2 3 4 | 	$upload_image = base64_encode(file_get_contents($image)); 	$update_img_params = array( 		'media_data'    =>  $upload_image, 	); | 
ポイント
 画像は、パラメータmedia_dataで送信する場合はbase64エンコードしたデータ。
パラメータmediaで送信する場合は生のバイナリデータにします。
 参考:https://dev.twitter.com/rest/reference/post/media/upload
3.画像を送信します。
| 1 | 	$code_img = $twitter->request( 'POST', "https://upload.twitter.com/1.1/media/upload.json", $update_img_params, true, true); | 
ポイント
 送信先のドメインが「upload.twitter.com」なので要注意です。
4.結果を受け取ります。media_idが画像の投稿IDです。
| 1 2 | 	$result_img = json_decode($twitter->response["response"], true); 	$result_media_id = $result_img['media_id']; | 
5.つぶやきと画像を送信します。
| 1 2 3 4 5 | 	$update_params = array( 		'media_ids'    =>  $result_media_id,//先ほど取得したmedia_id 		'status'    =>  $status,//つぶやき内容 	); 	 $code = $twitter->request( 'POST', "https://api.twitter.com/1.1/statuses/update.json", $update_param | 
ポイント
 media_ids画像を複数アップしたい場合は、media_idをカンマ区切りで指定します。
$twitter->request の第3引数、第4引数はデフォルト($useauth=true, $multipart=false)のままでOKです。
いかがでしたか?
みなさんも、ビシバシつぶやいてみてくださいね!