【Instagram API】Sandboxで複数ユーザーの写真を時系列に表示
Sandbox modeで複数ユーザーを表示したい
InstagramのAPI(Sandbox mode)で複数ユーザーの写真を
時系列に表示する方法をご紹介します。まずAPIの基本的な使用方法は下記をご参考ください。
アクセストークンの取得までできていればOKです。
ひとつのClientをそれぞれのアカウントと紐付けるので、
こちらの作業は一度で大丈夫です。
それぞれのアカウントを招待する
新たにClientを作成したら、表示させたいアカウントを招待します。
Client右上の「MANAGE」をクリックします。
Sandboxタブに移動して「Sandbox Users」にアカウントを追加します。
先程、「Sandbox Users」に追加したアカウントでログインして、
Sandbox Invites にアクセス。「Accept」をクリック。
以上で準備は完了です。
ソースコード
実際のソースコードになります。
各アカウントのユーザーIDがわからない場合は下記で取得できます。
https://smashballoon.com/instagram-feed/find-instagram-user-id/
PHP
ここで行う処理は下記のようになります。
5、6が今回のキモになります。
そのまま出力するとアカウントごとに並んでしまうので時系列になりません。
- 各アカウントのAPIを個別に呼出し
- 取得したAPI(JSON)をそれぞれ配列化
- 配列化したAPIを結合
- created_time(更新日)をキーに割り当て
- 更新日順にソート
- 出力
<?php $accessToken = 'fb2e77d.47a0479900504cb3ab4a1f626d174d2d'; // 実際のアクセストークンを入力 // 各アカウントのAPI $json1 = file_get_contents('https://api.instagram.com/v1/users/【ユーザーID】/media/recent/?access_token='.$accessToken); $json2 = file_get_contents('https://api.instagram.com/v1/users/【ユーザーID】/media/recent/?access_token='.$accessToken); $json3 = file_get_contents('https://api.instagram.com/v1/users/【ユーザーID】/media/recent/?access_token='.$accessToken); // JSONを配列化 $obj1 = json_decode($json1); $obj2 = json_decode($json2); $obj3 = json_decode($json3); // 複数の配列を結合 $obj4 = array_merge($obj1->data, $obj2->data, $obj3->data); // created_timeをキーに割り当て function keychanger( $arr ) { foreach ( $arr as $value ) { $k = $value->created_time; $v[$k] = $value; } return $v; } $obj = keychanger( $obj4 ); krsort($obj); // 配列をcreated_timeでソート $i = 0; $lastn = 10; // 取得する数 foreach($obj as $data){ if ( $i >= $lastn ) break; echo '<li><a href="' . $data->link . '" target="_blank"><img src="' . $data->images->low_resolution->url . '" alt="" width="245" height="245"></a></li>'; $i++; }
以上で複数ユーザーの写真を時系列に表示できました。
Writer
KO
誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。