こんにちは、プログラマです。
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です。
いかがでしたか?
みなさんも、ビシバシつぶやいてみてくださいね!