Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»
15 октября 2019 года компания Facebook по соображениям безопасности закрыла новым клиентам доступ к старому API «Instagram».
Альтернативой стали «API Instagram Basic Display» (базовый доступ, позволяющий получить основную информацию из профиля, его фото и видео) и «API Graph для Instagram» (расширенный доступ, позволяющий управлять своими аккаунтами: получать и публиковать медиафайлы, управлять комментариями и отвечать на них, работать с хэштегами и прочее).
В этой же статье мы подробно рассмотрим, как получить access_token для работы с базовым API «Instagram».
Как получить краткосрочный API Instagram Basic Display для работы с API «Instagram»?
Несмотря на то, что получение нового доступа к API кардинально изменилось, процесс остался таким же не сложным, хотя и относительно долгим по шагам.
1. Первым делом вам необходимо авторизоваться (а если нет профиля – то сначала зарегистрироваться) на facebook для разработчиков. Для этого перейдите по этой ссылке.
2. Далее в верхнем правом углу жмете «Мои приложения» - «Создать приложение».

3. В открывшемся окне введите название приложения и электронную почту.

После чего нажмите на кнопку «Создайте ID приложения».
4. После создания приложения и автоматического перехода к нему в левом меню перейдите в раздел «Настройки» - «Основное».

5. Открывшуюся страницу прокрутите до конца вниз и нажмите на кнопку «+ Добавить платформу», а в появившемся окне выберите «Веб-сайт».

6. В появившемся поле укажите ссылку на ваш сайт, после чего сохраните изменения нажатием на соответствующую кнопку.

7. Далее в левом меню перейдите в раздел «Панель».

А открывшуюся страницу прокрутите немного вниз, найдите карточку «Instagram» и в ней нажмите «Настроить».

8. В левом меню перейдите в раздел «Basic Display» (Базовое представление).

А открывшуюся страницу прокрутите до конца вниз, где нажмите на кнопку «Create New App» (Создать новое приложение).
9. Затем в появившемся окне введите название вашего приложения (у меня оно было прописано автоматически и совпадало с названием из шага 3 и нажмите «Создайте приложение».

10. После обновления страницы прокрутите ее немного вниз и в графы «Клиентские настройки OAuth», «Отменить авторизацию» и «Запросы на удаление данных» пропишите ссылку на ваш сайт.

После чего сохраните изменения нажатием на соответствующую кнопку.
11. Далее в левом меню найдите раздел «Роли». Раскройте его и перейдите в подраздел «Роли».

12. На открывшейся странице найдите блок «Тестировщики Instagram». В нем нажмите на кнопку «Добавить Instagram Testers».

13. В открывшемся окне введите имя аккаунта (логин) из Instagram и отправьте приглашение нажатием на соответствующую кнопку.

При этом хочу отметить, что по мере введения логина вам будут предложены найденные страницы. Это позволяет исключить отправку приглашения не тому лицу.
14. После того, как приглашение успешно отправлено, перейдите (и авторизуйтесь) к веб-версии Instagram.
15. Далее щелкните в правом верхнем углу по иконке человечка (профиля) и перейдите тем самым на свою страницу в Instagram.
16. Затем нажмите рядом с фотографией профиля кнопку «Редактировать профиль», а на отрывшейся странице (в левом меню) перейдите в «Приложения и сайты», где откройте вкладку «Приглашения тестировщиков» и примите находящееся там приглашение, которое вы отправили на 13 шаге.

17. Отлично, большая часть шагов позади и теперь необходимо авторизовать приглашенного пользователя в нашем приложении. Для этого перейдите по следующему адресу:
https://api.instagram.com/oauth/authorize?app_id=ID_ПРИЛОЖЕНИЯ&redirect_uri=АДРЕС_САЙТА&scope=user_profile,user_media&response_type=code
Где:
ID_ПРИЛОЖЕНИЯ – ID приложения, которое вы найдете в панели управления приложением на сайте facebook для разработчиков в разделе «Basic Display».

АДРЕС_САЙТА – адрес вашего сайта в точности так, как вы указали его в 10 шаге.
18. На открывшейся странице авторизации жмете «Авторизовать».

После чего вас перекинет на ваш сайт, где в адресной строке браузера вы увидите нечто похожее на это:

Здесь все, что находится между «?code=» и «#_» – это код авторизации, который действителен 1 час. Скопируйте его и отправляйтесь на следующий шаг.
19. В корне вашего сайта создайте PHP-файл с любым именем и вставьте в него следующий скрипт, заполнив массив соответствующими значениями:
<?php
header('Content-Type: text/html; charset=utf-8');
$post = [
'client_id' => '', // ID приложения Instagram
'client_secret' => '', // Секрет приложения Instagram
'redirect_uri' => '', // Адрес сайта
'code' => '', // Код авторизации
'grant_type' => 'authorization_code',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.instagram.com/oauth/access_token');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$data = curl_exec($ch);
$data = json_decode($data);
curl_close($ch);
if(isset($data->access_token)) {
echo 'Ваш краткосрочный access_token: '.$data->access_token;
} else {
print_r('<pre>');
print_r($data);
}
?>
Сохраните изменения и перейдите к этому файлу через браузер, и если все сделано правильно, вы получите свой заветный краткосрочный ключ доступа, в противном случае – код ошибки, которая подскажет, что именно вы сделали не так.
Обратите внимание, что 1 код авторизации из шага 18 дает 1 ключ доступа, так что при получении ключа на 19 шаге сохраните его, прежде чем покинуть или обновить страницу, скрипт при этом можно удалить.
Вот, собственно, и все.
Теперь можно проверить корректность работы ключа доступа. Для этого перейдите по следующему адресу:
https://graph.instagram.com/me?fields=id,username&access_token=ACCESS_TOKEN
Где «ACCESS_TOKEN» – ваш персональный ключ доступа, полученный ранее.
В ответ вам придет ID и username (логин) страницы, для которой вы получили ключ доступа. Если этого не произошло – пишите в комментариях, постараюсь помочь в решении проблемы.
Обратите внимание, что таким способом можно получить ключ доступа (access_token) и данные через него только для своей страницы. Для остальных же вам необходимо проходить проверку приложения (получать разрешения instagram_graph_user_profile для получения данных профиля и instagram_graph_user_media – для получения медиа) (сделать это можно в разделе «Basic Display», блок «Проверка приложения "Instagram Basic Display"»), а также получать разрешение (через аутентификацию) на использование информации у владельца страницы.
Ну и в логическое завершение: что же значит «краткосрочный» ключ?
Полученный в 19 шаге ключ доступа действителен всего лишь один час, после чего его действие аннулируется. Короткое время жизни ключа (на мой взгляд) обусловлено новой политикой безопасности Facebook, но, несмотря на это, есть способ, позволяющий значительно продлить время жизни ключа. Подробнее об этом читайте в следующей нашей статье.