2014年の5月ごろから、Twitter REST APIが複数画像の投稿に対応していたらしいので、その取得にチャレンジしてみました。
On May 28th PDT (UTC-7) we will launch support for composing tweets with multiple images via the REST API. Details: https://t.co/XB1rnLfFmo
— Twitter API (@twitterapi) 2014, 5月 22
単数の画像を取得するためのコード
まずは、GET statuses/user_timelineで、次の5つの情報を取得してみます。
- 日付($tweet->created_at)
- アイコン画像($tweet->user->profile_image_url)
- スクリーン名($tweet->user->screen_name)
- テキスト本文($tweet->text)
- 単数の投稿画像($tweet->entities->media[0]->media_url)
最初の4つは、ドキュメントのExample Resultで返される値ですが、最後の1つは、Twitterで使われているオブジェクトを実体化しています。
(このネタは以前も書きました)
[php]
<?php
require_once("twitteroauth/twitteroauth.php");
$consumerKey = "MYCONSUMERKEY";
$consumerSecret = "MYCONSUMERSECRET&quot";
$accessToken = "MYACCESSTOKEN&";
$accessTokenSecret = "MYACCESSTOKENSECRET";
$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
$request = $twObj->OAuthRequest(‘https://api.twitter.com/1.1/statuses/user_timeline.json’,’GET’,
array(
‘count’=>’200’,
‘screen_name’ => ‘MYSCREEN_NAME’,
‘include_entities’=>true
$results = json_decode($request);
?>
<?php
if(isset($results) &amp;&amp; empty($results->errors)){
foreach($results as $tweet){
?>
<?php echo date(‘Y-m-d H:i:s’, strtotime($tweet->created_at)); ?></br>
<img src="<?php echo $tweet->user->profile_image_url; ?>"></br>
<?php echo $tweet->user->screen_name; ?></br>
<?php echo $tweet->text; ?></br>
<?php echo $tweet->entities->media[0]->media_url; ?></br>
<?php } ?>
<?php }else{ ?>
<?php echo "関連したつぶやきがありません。"; ?>
<?php } ?>
[/php]
複数の画像を取得するためのコード。が…
複数の画像を取得するためのコードも、だいたい同じです。
[php]
<img src="<?php echo $tweet->entities->media[0]->media_url; ?>">[/php]
entitiesというオブジェクトを
[php]
<img src="<?php echo $tweet->extended_entities->media[0]->media_url; ?>">
[/php]
extended_entitiesにしているだけです。ですが、なぜかこれでは、複数の画像を呼び出すことはできません。
元のつぶやきには3枚の画像が投稿されていますが、
今回GETで参照したつぶやきには、画像が1枚しか表示されていません。
Uploading Media: Multiple PhotosのSample outputを読むと、それらしきことが書いているんですが。どういうことでしょうかね?
〔参考サイト〕