Безлимитный хостинг на сверхбыстрых SSD-дисках от 66р в месяц   •   Реклама
6 721 просм
33 комм
Поделиться:

Получение базового (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. Далее в верхнем правом углу жмете «Мои приложения» - «Создать приложение».

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

После чего нажмите на кнопку «Создайте ID приложения».

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

9. Затем в появившемся окне введите название вашего приложения (у меня оно было прописано автоматически и совпадало с названием из шага 3 и нажмите «Создайте приложение».

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

После чего сохраните изменения нажатием на соответствующую кнопку.

11. Далее в левом меню найдите раздел «Роли». Раскройте его и перейдите в подраздел «Роли».

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

При этом хочу отметить, что по мере введения логина вам будут предложены найденные страницы. Это позволяет исключить отправку приглашения не тому лицу.

14. После того, как приглашение успешно отправлено, перейдите (и авторизуйтесь) к веб-версии Instagram.

15. Далее щелкните в правом верхнем углу по иконке человечка (профиля) и перейдите тем самым на свою страницу в Instagram.

16. Затем нажмите рядом с фотографией профиля кнопку «Редактировать профиль», а на отрывшейся странице (в левом меню) перейдите в «Приложения и сайты», где откройте вкладку «Приглашения тестировщиков» и примите находящееся там приглашение, которое вы отправили на 13 шаге.

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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».

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

АДРЕС_САЙТА – адрес вашего сайта в точности так, как вы указали его в 10 шаге.

18. На открывшейся странице авторизации жмете «Авторизовать».

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

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

Получение базового (API Instagram Basic Display) ключа доступа (access_token) для API «Instagram»

Здесь все, что находится между «?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, но, несмотря на это, есть способ, позволяющий значительно продлить время жизни ключа. Подробнее об этом читайте в следующей нашей статье.

33
комментария
Форма комментирования этой статьи скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 0
    2
      •  Проверенный
    22 фев в 15:18

    Добрый день!

    На шаге 19 возникает следующая проблема. Скрипт присылает следующую ошибку:

    stdClass Object

    (

    [error_type] => OAuthException

    [code] => 400

    [error_message] => Invalid authorization code

    )

    Хотя код получил и скопировал его как полагается. В чем может быть проблема?

      • 0
      828
        •  Администратор
      23 фев в 02:28

      Артем Быков, здравствуйте!

      Код авторизации копируете без ошибок (весь и без пробелов по бокам)?

      • 0
      2
        •  Проверенный
      29 фев в 10:35

      Артём Мáлков, добрый день!

      Да, эта проблема решена, по всей видимости код копировал не правильно. НО У себя на сайте ничего не происходит. В консоле появляется следующая проблема:

      Uncaught Error: Error from Instagram: The access_token provided is invalid.
      
      at e.parse (instafeed.min.js:40)
      
      at recent?access_token=мой токен&count=20&callback=instafeedCache1ebb02725e6c3696.parse:1

      Возможно проблема в том, что нужно пройти полную авторизацию приложения и запустить его?

    • 0
    2
      •  Проверенный
    2 дек в 11:46

    Тому, как получить это access_token, и посвящена эта статья.

    1. Первым делом вам необходимо авторизоваться в Instagram, для этого перейдите по этой ссылке.

    Добрый день! меня с этой ссылки перекидывает просто на главную страницу Pandoge

    и никакой регистрации для разработчика, ни входа в инстаграмм

      • 0
      828
        •  Администратор
      2 дек в 15:39

      Денис Липатов, Здравствуйте!

      Такое может случиться, если Вы копируете ссылку и потом в ручную вставляете ее в браузер или пытаетесь открыть ее в новой вкладке/окне.

      Попробуйте еще раз (просто нажать на нее) в режиме инкогнито или в другом браузере.

      • 0
      2
        •  Проверенный
      11 дек в 10:16

      А это точно актуальная статья? не позволяет он данным методом регистрироваться, даже половины функций нет

      • 0
      1
        •  Пользователь
      24 дек в 01:10

      Денис Липатов,

      Статья не актуальна с 15 октября 2019 г. http://joxi.ru/n2YlKY4tZoNbpm На русском инструкций по работе с новым API не нашёл. Будем разбираться на инглише...

      • 0
      828
        •  Администратор
      24 дек в 15:31

      Денис Липатов, Андрей, статья будет обновлена в ближайшее время.

    • 0
    1
      •  Пользователь
    4 сен в 00:35

    Добрый вечер, интересует данная тема

    Смогли бы помочь в получение API Instagrama, нужно для приложения

    Спасибо

      • 0
      828
        •  Администратор
      4 сен в 01:07

      Дмитрий пономарев, здравствуйте.

      В чем именно у Вас возникает проблема?

    • 0
    1
      •  Пользователь
    28 ноя в 23:33

    Добрый вечер!

    Ошибка......

    {"error_type": "OAuthForbiddenException", "code": 403, "error_message": "Implicit authentication is disabled"}

    что делать???

    Заранее спасибо!)

      • 0
      828
        •  Администратор
      28 ноя в 23:56

      Александр, галку сняли с Disable implicit OAuth ?

    • 0
    766
      •  Гости
    27 окт в 13:34

    Нет капча, что делать?

      • 0
      828
        •  Администратор
      28 окт в 21:25

      Andrey, ниже у человека похожая проблема.

      Почитайте предыдущие комментарии wink

    • 0
    766
      •  Гости
    26 окт в 15:48

    Капча не отображаеться перепробовал кучу браузеров с телефона пробовал войти ни фига, кто токен получал и как?

      • 0
      766
        •  Гости
      26 окт в 17:39

      Почему не повляется капча?

      • 0
      828
        •  Администратор
      26 окт в 17:52

      Злой, блокировщика рекламы не стоит? Я получал токен без каких либо проблем.

      • 0
      766
        •  Гости
      26 окт в 20:43

      Я пробовал с разных брваузеров, отключал все дополнения, пробовал регаться с телефона, андройд, афоня, с планшетника айпад. Не появляеться капча. Чистил кеш я уже наверное все перепробовал

      • 0
      828
        •  Администратор
      26 окт в 21:08

      Злой, увидел. Видимо какой-то сбой у них. Ожидайте и заглядывайте периодически. Думаю решат вопрос.

      • 0
      766
        •  Гости
      26 окт в 21:13

      Оу ну это радует, будем ждать, спс ман!

    • 0
    766
      •  Гости
    26 окт в 08:07

    Капча не отображается, а без нее никак((

    • 0
    766
      •  Гости
    9 окт в 02:51

    Артем, доброй ночи, все сделал как вы описали,но что дальше делать не понимаю, ( спасибо запонимание

      • 0
      828
        •  Администратор
      9 окт в 13:55

      Виктор Борисевич, а для чего вы получили ключ? Какие задачи стоят.

    • 0
    766
      •  Гости
    18 сен в 17:06

    А если еще никакого приложения и сайта нет, что указывать в соответствующих полях?

      • 0
      828
        •  Администратор
      18 сен в 17:19

      Лев, начиная с 4 пункта вы его (приложение) и создаете.

    • 0
    766
      •  Гости
    30 авг в 09:51

    Сделал все по инструкции, получаю {"error_type": "OAuthException", "code": 400, "error_message": "Redirect URI does not match registered redirect URI". В чем проблема?

    • 0
    766
      •  Гости
    3 июн в 02:32

    Отличный гайд, заняло всё 5 минут, спасибо!

      • 0
      766
        •  Гости
      3 июн в 14:25

      Подскажите, а сколько этот токен действителен? Получаю ошибку постоянно "OAuthAccessTokenException"

      • 0
      828
        •  Администратор
      4 июн в 14:07

      Александр, смотря как Вы его используете. Я когда писал модуль - сделал его один раз и вот он уже несколько месяцев работает без проблем.

      • 0
      766
        •  Гости
      4 июн в 20:55

      Артем, да я пока никак его не использую, захотел изучить эту тему и застрял на получении токена.

      Первые шаги делаю по Вашему гайду, а дальше с "Step Three: Request the access_token" вот такая проблема.

      • 0
      766
        •  Гости
      4 июн в 21:41

      Я заметил теперь, что у Вас написано "response_type=code", но вы получаете сразу "access_token". В таком случае правильный запрос будет "response_type=token", правильно? Это способ получения на стороне клиента, который предполагает всего 2 шага. А там где "response_type=code" - серверный способ, в котором три шага. Я прав?

      • 0
      828
        •  Администратор
      5 июн в 03:10

      Александр, вообще нет. В ссылке меняете только ID приложения и ссылку на сайт, все остальное - без изменений.

      Так же проверьте, совпадает ли указанный в ссылке адрес с веденным в 4 шаге. Это очень важно.

Подняться наверх
«Pandoge» - помощник вебмастера