Вывод постов из Instagram на сайт с помощью API

Вывод постов из Instagram на сайт с помощью API

26 мая 2020 PHP

У инстраграма нет готового виджета для вывода постов на сайте. В прошлой статье мы рассматривали как создать Instagram виджет для сайта с помощью конструктора. Это самый простой и быстрый способ, и на мой взгляд самый лучший. Единственный его минус, как и в любом другом шаблонном конструкторе — это ограниченное изменение внешнего вида и функционала. Но с большинством задач конструктор вполне справится.

Если же вы хотите, что-то особенное, то тогда придется выводить посты с помощью API Instagram. В этой статье вы найдете уже готовый класс на PHP для работы с инстраграм. Это библиотека, которая облегчит вам жизнь, и которую вы можете использовать в своих проектах.

Получите токен Instagram

На данный момент для получения токена в Instagram требуется так же аккаунт разработчика Facebook.

1. Перейдите по ссылке https://developers.facebook.com и нажмите «Начать», затем во всплывающем окне «Далее».

Facebook for Developers

2. На вновь открывшемся окне выберите «Создать свое первое приложение».

Создать свое первое приложение

3. Введите желаемое имя и E-mail.

Создание нового приложения

4. После заполнения формы страница будет перезагружена. Вас перенаправят на страницу панели нового приложения. В меню выберите Настройки → Основное.

Страница нового приложения

5. В самом низу нажмите «Добавить платформу».

Добавить платформу

6. В открывшемся окне выберите платформу «Веб-сайт».

Выбор платформы

7. В конце страницы появится выбранная платформа «Веб-сайт» и поле для ввода URL-адреса сайта. Заполните его и сохраните изменения.

URL-адрес сайта

8. В меню нажмите «Товары», найдите карточку Instagram и перейдите к ее настройке.

Меню товары

9. После того, как вы перейдете к настройке товара, он станет доступным в левом меню. Разверните пункт «Instagram» и выберите пункт «Basic Display». Внизу страницы нажмите «Create New App».

Create New App

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

Нужен сайт по доступной цене? Здесь https://webmaster59.ru/sozdanie-sajtov-perm.html вы можете заказать сайт любой сложности, от простого сайта-визитки до корпоративного сайта или интернет магазина качественно и по низким ценам!

10. После сохранения настроек станут доступны новые поля. Необходимо заполнить следующие:

  • Действительные URI переадресации для OAuth.
  • Деавторизация URL обратного вызова.
  • URL запроса на удаление данных.

Во всех полях нужно указать адрес сайта, для которого будет настраиваться виджет.

Клиентские настройки OAuth

11. В левом меню выберите  пункт «Роли», в выпадающем меню еще раз пункт «Роли». На открывшейся странице выберите «Добавить Instagram Testers».

Добавить Instagram Testers

12. В открывшемся окне укажите имя пользователя аккаунта Instagram. После выбора отправьте приглашение пользователю.

Добавление пользователя

13. Пользователь появится в списке тестировщиков, но со статусом «На рассмотрении». Чтобы подтвердить приглашение, необходимо перейти по ссылке в тексте.

Тестировщики Instagram

13. Ссылка ведет на сайт Instagram, необходимо авторизоваться, чтобы принять приглашение. На открывшейся странице перейдите в Приложения и сайты → Приглашения для тестировщиков. Примите приглашение.

Приложения и сайты

14. Разверните пункт «Instagram» и выберите пункт «Basic Display». В блоке «User Token Generator» нажмите кнопку «Generate Token».

Generate Token

15. Если вы не авторизованы, войдите в свой профиль Instagram. На открывшейся странице нажмите кнопку «Авторизовать». После успешной авторизации необходимо согласиться с предупреждением о необходимости передачи токена только доверенным лицам. Далее перед вами откроется окно в вашим токеном. Ваш токен сгенерирован, скопируйте его!

Сгенерированный токен

Библиотека на PHP для работы с Instagram API

<?
class Instagram{
    const URL_INSTAGRAM_API = 'https://graph.instagram.com/me/';
    private $access_token = 0;
    public $token_params = 0;
    public $count_post = 0;
    public $error = "";
    public $App = "";
    public function __construct($token, $count = 10){
        global $APPLICATION;
        $this->token_params = $token;
        $this->count_post = $count;
        $this->App=$APPLICATION;
    }
    public function checkApiToken(){
        if(!strlen($this->token_params)){
            $this->error="No API token instagram";
        }
        $this->access_token='/?access_token='.$this->token_params;
    }
    public function getFormatResult($method, $fields = ''){
        if(function_exists('curl_init'))
        {
            if($fields) {
                $method.$this->access_token .= '&fields='.$fields;
            }
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, self::URL_INSTAGRAM_API.$method.$this->access_token."&limit=".$this->count_post);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
            $out = curl_exec($curl);
            $data =  $out ? $out : curl_error($curl);            
        }
        else
        {
            $data = file_get_contents(self::URL_INSTAGRAM_API.$method.$this->access_token);            
        }
        
        $data = json_decode($data, true);
        return $data;
    }
    public function getInstagramPosts(){
        $this->checkApiToken();
        if($this->error){
            return array("ERROR" => "Y", "MESSAGE" => $this->error);
        }else{
            $data=$this->getFormatResult('media', 'id,caption,media_url,permalink,username,timestamp,thumbnail_url');
        }
        return $data;
    }
    
    public function getInstagramUser(){
        $this->checkApiToken();
        if($this->error){
            return $this->error;
        }else{
            $data=$this->getFormatResult('users/self');
        }
        return $data;
    }
    public function getInstagramTag($tag) {
        $this->checkApiToken();
        if($this->error){
            return $this->error;
        }else{
            $data=$this->getFormatResult('tag/'.$tag.'/media/recent');
        }
        return $data;
    }
}
?>

Использование библиотеки:

<?
$token = 'Здесь полученный токен';

$inst = new Instagram($token);
$instPosts = $inst->getInstagramPosts();
print_r($instPosts);
?>

В массиве $instPosts будут содержаться все данные постов.

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Остались вопросы по статье? Задайте их прямо сейчас!
Похожие записи
Instagram виджет для сайта

К сожалению в Instagram нет стандартного функционала для вывода виджета на сайт, такого как например Вконтакте и Facebook. Но есть несколько способов создать подобный виджет. Первый это написать такой самому, второй воспользоваться готовым кодом конструктора. По сути конструктор это тоже Читать далее

Как создать чат-бота ВКонтакте

В этом руководстве создадим чат-бота ВКонтакте, которого можно добавить не только в сообщения группы, но и в групповую беседу. Бот может прослушивать все сообщения в беседе, и если в каком-то из них будет содержаться определенное слово, фраза или часть текста, Читать далее

PHP классы, объекты, методы

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

Удалить значение из массива на PHP

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

Создание чат-бота для Viber

В этой статье рассмотрим как создать простого чат-бота для Viber, который будет принимать и отправлять сообщения в чат. Шаг 1 Итак, для начала необходимо зарегистрироваться в сервисе Viber Admin Panel по этой ссылке. Шаг 2 Создаём бота. Для этого заполняем Читать далее

13 комментариев на «Вывод постов из Instagram на сайт с помощью API»

  1. Александр:

    А добавить подгрузку «Показать больше» как сделать?

  2. Антон:

    В переменной $count передаётся количество постов. Можно получить, например, 50 постов и разделить их на страницы по 10. Ещё можете посмотреть API инстаграмма, возможно там есть и параметр для разбиения на страницы.

  3. Дмитрий:

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

  4. Антон:

    Надо получить токен с его аккаунта.

  5. Анастасия:

    А если получено разрешение с двух аккаунтов? Как выводить по разному с одного и с другого? То есть в тестеровщиках стоят 2 аккаунта

  6. Антон:

    Получать записи с двух аккаунтов и сливать в один массив.

  7. Дмитрий:

    На 9-м пункте вашей инструкции я сломался. У меня пункт «товары» не разворачиваются. Пункта «Basic Display» нет.
    Можете помочь за денежку поставить виджет на сайт?
    Напишите мне, пожалуйста: coolbits@yandex.ru или на skype: dmitry.valkovsky
    С меня вознаграждение за работу.

  8. Ирина:

    Спасибо большое за информацию! Все работает отлично 🙂

  9. Алексей:

    Сделал все по инструкции — посты передаёт, а вот фото не передает, подскажите как поправить?

    http://joxi.ru/12MBL4RulWjvbA

  10. Александр:

    Спасибо за урок! Подскажите, пож., как вывести количество постов, подписок и подписчиков?

  11. Krassnow:

    Спасибо, все работает! У меня 2 вопроса, а есть ли другие форматы изображений для вывода?
    Можно ли как-то получать и выводить истории?

  12. Анто:

    Хорошая статья

  13. Maxim:

    Добрый день, подскажите как вывести кол. пописчиков ?

Добавить комментарий

*

code