Вывод постов из 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 будут содержаться все данные постов.

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

Что если сообщения с сайта будут приходить не только на ваш e-mail, но и моментально в мессенджер телеграм. Удобно же! Нужно было реализовать такой функционал, ну как и всегда все оказалось довольно просто. Так же стояла задача отправлять сообщения не Читать далее

Отправка формы без перезагрузки страницы на PHP и Ajax

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

Вывести на PHP месяц и день недели на русском

Довольно часто приходится сталкиваться с выводом названий месяцев и дней недели по-русски. При чем в различных вариантах, к примеру с полным названием или сокращенным, с большой буквы или с маленькой. Можно воспользоваться одним из этих 2 вариантов для вывода даты Читать далее

Парсер яндекс погоды на PHP

Рабочий пример PHP парсера, который получает погоду с Яндекса по ID города. Скрипт сохраняет данные в файле кеша на сайте, и обновляет его раз в час. Так же расскажу как выводить на сайте собственные иконки погоды вместо стандартных от Яндекса. Читать далее

Как встроить видео с YouTube канала на сайт

Для вывода списка видеозаписей из канала или плейлиста YouTube на сайте можно воспользоваться этим полностью рабочим решением на PHP. С помощью этой функции можно получить все необходимые данные видеозаписей: название, изображение и идентификатор видео. Вам понадобится идентификатор канала или плейлиста. Читать далее

Курсы доллара и евро с сайта Центробанка на PHP

Парсер получает курсы доллара и евро с сайта Центробанка каждые 24 часа и записывает их в файл кеша /log/course.txt Скрипт полностью готов к работе и не требует каких-либо дополнительных настроек. <? function loadCourse(){ define("tsCourse","15:00:00"); # Время смены курса центральным банком Читать далее

Календарь на PHP и Ajax

Пример календаря на PHP и Ajax с переключением месяцев. Можно использовать как заготовку для решения любых задач. Я использовал его для создания плагина календаря мероприятий на WordPress. Скрипт использует процедурный подход, но имеет разделенную структуру с шаблоном , что довольно Читать далее

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

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

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

  2. Антон:

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

  3. Дмитрий:

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

  4. Антон:

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

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

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

  6. Антон:

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

  7. Дмитрий:

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

  8. Ирина:

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

  9. Алексей:

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

    http://joxi.ru/12MBL4RulWjvbA

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

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

  11. Krassnow:

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

  12. Анто:

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

  13. Maxim:

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

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