27
28

More than 5 years have passed since last update.

【API】Instagramから特定ユーザの最新画像を取得する【Instagram】

Last updated at Posted at 2014-09-26

下準備

1.instagramアカウントを取得する。
2.Instagram Developerに登録する。
3.登録して取得したcurrentID とRedirectURLを仕様して下記URLにアクセスする。

https://instagram.com/oauth/authorize/?client_id=【CLIENT-ID】&redirect_uri=【REDIRECT-URI】&response_type=token

するとredirect_urlが表示され、パラメータにアクセストークンが付与されているのでこれを保持する。

【REDIRECT-URI】#access_token=xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxx

ユーザアカウントから固有ユーザ情報を取得する。

APIで特定ユーザの画像を取得するにはユーザ固有のIDを確認する必要がある。
この固有のIDはユーザアカウントではない。
なので、APIを使いユーザアカウントからユーザ情報を取得し、そこに格納されている固有IDを取得する必要がある。

// ユーザネームから固有のuser_IDを取得する。
define("INSTAGRAM_ACCESS_TOKEN", "xxxxxxxxxxxxxxxxxxxx");
$user_api_url = 'https://api.instagram.com/v1/users/search?q=' . $user_id . '&access_token=' . INSTAGRAM_ACCESS_TOKEN;
$user_data = json_decode(@file_get_contents($user_api_url));

$user_data->data[0]->ID; // ユーザ固有ID

ユーザ情報を取得する上での注意点

上記の方法で取得する際、APIの仕様で検索した際に似たようなユーザアカウント情報も取得されてしまいます。
なので、取得の際は書きのようにして自分が欲しい正しいデータを取得するのが必要かもしれませんね。

// ユーザネームから固有のuser_IDを取得する。
define("INSTAGRAM_ACCESS_TOKEN", "xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxx");
// ユーザアカウント名
$user_account = 'user_acount_mei';

// ユーザアカウント名からユーザデータを取得する。
$user_api_url = 'https://api.instagram.com/v1/users/search?q=' . $user_account . '&access_token=' . INSTAGRAM_ACCESS_TOKEN;
$user_data = json_decode(@file_get_contents($user_api_url));

// 取得したデータの中から正しいデータを選出
foreach ($user_data->data as $user_data) {
    if ($user_account == $user_data->username) {
        $user_id = $user_data->id;
    }
}

ユーザ固有IDを用いてユーザが登録した最新画像を取得する。

// ユーザネームから固有のuser_IDを取得する。
define("INSTAGRAM_ACCESS_TOKEN", "xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxx");
// ユーザアカウント名
$user_account = 'user_acount_mei';

// ユーザアカウント名からユーザデータを取得する。
$user_api_url = 'https://api.instagram.com/v1/users/search?q=' . $user_account . '&access_token=' . INSTAGRAM_ACCESS_TOKEN;
$user_data = json_decode(@file_get_contents($user_api_url));

// 取得したデータの中から正しいデータを選出
foreach ($user_data->data as $user_data) {
    if ($user_account == $user_data->username) {
        $user_id = $user_data->id;
    }
}

$photos = array();
// 特定ユーザの投稿データ最新5件を取得する
$photos_api_url = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent?access_token=' . INSTAGRAM_ACCESS_TOKEN . "&count=5";
$photos_data = json_decode(@file_get_contents($photos_api_url));

foreach ($photos_data->data as $photo) {
    echo '<img src="' . $photo->images->standard_resolution->url . '" alt="">';
}

なお、images以下には画像サイズが3種類用意してあるので用途に応じて大きさを使い分けてください。
また、このAPIで取得したデータには画像に対してlikeしてくれた人のデータも保持されてたので、
使いようによってはもっとあれこれできるかも。

27
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
28