【Instagram API】Sandboxで複数ユーザーの写真を時系列に表示

  • PHP
【Instagram API】Sandboxで複数ユーザーの写真を時系列に表示

Sandbox modeで複数ユーザーを表示したい

InstagramのAPI(Sandbox mode)で複数ユーザーの写真を
時系列に表示する方法をご紹介します。まずAPIの基本的な使用方法は下記をご参考ください。
アクセストークンの取得までできていればOKです。

Instagram APIの使用方法

ひとつのClientをそれぞれのアカウントと紐付けるので、
こちらの作業は一度で大丈夫です。

それぞれのアカウントを招待する

新たにClientを作成したら、表示させたいアカウントを招待します。

【Instagram API】Sandboxで複数ユーザーの写真を時系列に表示1

Client右上の「MANAGE」をクリックします。

【Instagram API】Sandboxで複数ユーザーの写真を時系列に表示2

Sandboxタブに移動して「Sandbox Users」にアカウントを追加します。

【Instagram API】Sandboxで複数ユーザーの写真を時系列に表示2

先程、「Sandbox Users」に追加したアカウントでログインして、
Sandbox Invites にアクセス。「Accept」をクリック。

以上で準備は完了です。

ソースコード

実際のソースコードになります。
各アカウントのユーザーIDがわからない場合は下記で取得できます。

https://smashballoon.com/instagram-feed/find-instagram-user-id/

PHP

ここで行う処理は下記のようになります。
5、6が今回のキモになります。
そのまま出力するとアカウントごとに並んでしまうので時系列になりません。

  1. 各アカウントのAPIを個別に呼出し
  2. 取得したAPI(JSON)をそれぞれ配列化
  3. 配列化したAPIを結合
  4. created_time(更新日)をキーに割り当て
  5. 更新日順にソート
  6. 出力
<?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

KO

誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。

Page Topへ