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