SOFTELメモ

Softel Inc.

【php】twitterのREST APIで画像付きツイートをする

問題

twitterの REST APIの statuses/update_with_media で、画像つきツイートをしたい。

画像付きツイート

答え

OAuthするので、既存のライブラリを使うのが手軽でしょう。

statuses/update_with_mediaで画像付きツイートをするには、いくつか注意が必要。


twitteroauthもよいのですが、画像付きツイートができなさそう。multipart/form-dataなPOSTができないようだ。


tmhOAuthは大丈夫。multipart/form-dataのPOSTに対応していて、画像付きツイートができる。

//ファイルひとつ読み込むだけで済むのはよいですね
require '../tmhOAuth.php';

$tmhOAuth = new tmhOAuth(array(
	'consumer_key'    => 'YOUR_CONSUMER_KEY',
	'consumer_secret' => 'YOUR_CONSUMER_SECRET',
	'user_token'      => 'AN_ACCESS_TOKEN',
	'user_secret'     => 'AN_ACCESS_TOKEN_SECRET',
));

// ↓画像ファイル名をべた書きしているが、適宜書き換えたり、動的に変更したりできる
// 例)アップロードファイル受け付けの場合 "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}",
$image = './sample.jpg';

$code = $tmhOAuth->request('POST', 'https://upload.twitter.com/1/statuses/update_with_media.json',
	array(
		'media[]'  => "@{$image}", //cURLに渡す形式でファイル名。もしくはファイルの中身を渡してもよい。
		'status'   => "画像付きテストツイート"
	),
	true, // 認証する
	true  // multipart/form-data で
);

if ($code == 200) {
	print_r(json_decode($tmhOAuth->response['response']));
} else {
	print_r($tmhOAuth->response['response']);
}

参考

Working with statuses/update_with_media

関連するメモ

コメント