Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

下準備

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してくれた人のデータも保持されてたので、
使いようによってはもっとあれこれできるかも。

_shogo_
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした