Доступ к общедоступному контенту Instagram через API Instagram без истечения срока действия токена доступа

я хочу показать общедоступный контент из instagram, связанный с определенным хэштегом (с этим все работает нормально), но я не могу обновлять access_token каждый раз, когда он истекает.

(«не думайте, что ваш access_token действителен вечно». — https://www.instagram.com/developer/authentication/)

Чтобы обновить его вручную, это не вариант, я должен убедиться, что существует действительный access_token в ЛЮБОЕ время без повторной аутентификации.

Любые идеи или вопросы? :)


person nipeco    schedule 06.12.2016    source источник
comment
Когда я просмотрел документацию, похоже, они не предоставляют токен обновления, и, следовательно, вы не можете обновить свой токен доступа.   -  person Vaya    schedule 06.12.2016
comment
Можете ли вы сообщить мне, как вы можете получить общедоступные сообщения для определенного хэш-тега?   -  person HishHash    schedule 08.12.2016


Ответы (3)


У меня есть одна идея, но без API (и access_token). Вы можете делать запросы к веб-версии Instagram с параметром ?__a=1. Я не знаю, как долго это будет работать, но сейчас есть рабочий процесс:

  1. Например, вы хотите показывать общедоступный контент с хэштегом space.
  2. Добавьте его в URL и добавьте GET-параметр ?__a=1: https://www.instagram.com/explore/tags/space/?__a=1
  3. Сделать GET-запрос. Он возвращает json с узлами в top_posts (8) и media (18). Каждый узел имеет owner, caption, количество комментариев и лайков. Но самая важная часть находится в thumbnail_src и display_src.
  4. В объекте page_info есть объект media, который помогает разбивать результаты на страницы. Вам нужно end_cursor (например, J0HWE9rjAAAAF0HWE9qvgAAAFiYA)
  5. Добавьте значение из end_cursor к URL-адресу: https://www.instagram.com/explore/tags/space/?__a=1&max_id=J0HWE9rjAAAAF0HWE9qvgAAAFiYA
  6. Повторите 3-6, чтобы получить самые новые сообщения с определенным хэштегом.
person rNix    schedule 13.12.2016
comment
Спасибо за ваш ответ! Это может работать сейчас, но мне нужно стабильное решение на будущее. В будущем могут быть необъявленные изменения. - person nipeco; 14.12.2016
comment
Работает минимум 7 месяцев. Думаю вполне стабильно. - person rNix; 15.12.2016
comment
Это не работает сейчас для имени пользователя. пример: instagram.com/3mariachisrd/?__a=1 - person lorenzo gonzalez; 15.04.2018

Обновите параметр URL-адреса ?__a=1. Похоже, это перестало работать с конечными точками пользователей '/account/?__a=1'. :( Очевидно, все еще работает с тегами.

person Ryan Parrish    schedule 11.04.2018
comment
Да, я могу это подтвердить. Отключился, пока я работал над каким-то программным обеспечением. Думал, что это мягкий бан по ip от инстаграма, но потом заметил, что он даже дает ответ 403 об отказе в доступе с прокси и с нескольких устройств. - person pattyd; 12.04.2018
comment
Здесь тоже внизу. Думаю, они затыкают дыры после слушания. - person rideon88; 12.04.2018
comment
Я думаю, что это связано с воротами конфиденциальности в Facebook. Но я уже не в той теме. - person nipeco; 12.04.2018
comment
Есть ли другой способ? - person Kamlesh Delat; 13.04.2018
comment
Мой Бог! Есть ли другой способ ?? - person lorenzo gonzalez; 15.04.2018

Instagram закрыл свой публичный API. Вот быстрый и грязный обходной путь в PHP:

<?php
function getPublicInfo($username) {
    $url     = sprintf("https://www.instagram.com/$username");
    $content = file_get_contents($url);
    $content = explode("window._sharedData = ", $content)[1];
    $content = explode(";</script>", $content)[0];
    $data    = json_decode($content, true);
    return $data['entry_data']['ProfilePage'][0];
}

Не уверен, как долго это будет работать. Вот для Javascript.

person Zerquix18    schedule 24.04.2018