Статья неактуальна т.к. Instagram и Facebook перестали предоставлять свободный доступ к API, теперь работа ограничена только с личным профилем и доступна после проверки приложения (в Facebook отправляется запрос с обоснованием и скриншотами работы приложения).
Чтобы работать с API нужно сделать несколько действий:
1. Зарегистрироваться в разделе для разработчиков – https://www.instagram.com/developer/register/
2. После этого нужно добавить клиента (кнопка «Register a New Client»). В форме указать название и описание клиента, адрес вашего сайта и адрес редиректа (Valid redirect URIs) – он будет использован для получения токена. Важно также указать название компании, e-mail и Privacy Policy иначе клиент будет не активным.
После отправки формы вы получите CLIENT ID
, далее нажав на кнопку «Manage», вкладка «Security» – нужно снять флаг «Disable implicit OAuth».
3. Далее нужно авторизовать клиента и получить access_token
. Для этого понадобится сформировать ссылку подставив свои client_id
, redirect_uri
и перейти по ней в браузере:
https://www.instagram.com/oauth/authorize/?client_id=
CLIENT_ID
&redirect_uri=http://test.ru/
&response_type=token
После подтверждения прав произойдет редирект на ваш сайт с access_token
в URL.
Всё, можно пользоваться API, например:
Получение последних 5 фото
$client_id = 'CLIENT_ID';
$access_token = 'ACCESS_TOKEN';
$user_id = 'user_id'; // Цифры идущие до первой точки в ACCESS_TOKEN
$res = file_get_contents('https://api.instagram.com/v1/users/' . $user_id . '/media/recent/?client_id=
' . $client_id . '&access_token=' . $access_token . '&count=5');
$res = json_decode($res, true);
if (!empty($res['data'])) {
//var_dump($res['data']);
foreach($res['data'] as $row) {
// Можно вывести фото на странице:
echo '<img src="' . $row['images']['standard_resolution']['url'] . '">';
// Или сохранить файл на сервере:
$url = $row['images']['standard_resolution']['url'];
$url = explode('?', $url);
$ext = mb_strtolower(mb_substr(mb_strrchr($url[0], '.'), 1));
$file = $row['id'] . '.' . $ext;
copy($row['images']['standard_resolution']['url'], __DIR__ . '/instagram/' . $file);
}
}