• Как работать с User Subscriptions instagram api?

    @vla-dis
    king_men, Отлично! рад что получилось :)
  • Как работать с User Subscriptions instagram api?

    @vla-dis
    king_men, выложил сюда
    Код не стал чистить, в нем дописан функционал на отправку фоток из инстаграмма в телеграм, а также прием сообщений из телеграмма в скрипт. По идее должно работать без правок, только id нужные поставить.
  • Как работать с User Subscriptions instagram api?

    @vla-dis
    Philipp, с парсингом у меня вопросов нет. Код где я получаю ид и тащу фотку по нему я выше выложил, он работает. А вот как сделать одну подписку на всех пользователей? Граф апи этот видел, но у меня не бизнес акки.
  • Как работать с User Subscriptions instagram api?

    @vla-dis
    Philipp, да эту документацию я уже наизусть могу прочитать, но что-то мозгов не хватает составить простой поэтапный план как это дожно работать, если мне нужно а) один файл скрипта б) несколько подписок на разных пользователей. Не считая того способа что я описал выше - мне кажется что как-то это проще должно быть, без создания двух приложений. Кстати, второй токен все же понадобился, со второго аккаунта по первому токену фото не загружались .
  • Как работать с User Subscriptions instagram api?

    @vla-dis
    king_men, частично - да. Подписка заработала, причем сама. Моя цель была получить на callback.php уведомления с нескольких аккаунтов, т.е. подписку на несколько пользователей.
    Из плохих новостей: при проверке списка подписок, также вылазит подписка с нулевыми id (я так понял это нормально). Создать подписку на теги или что-то другое, кроме юзера, также не удалось - подписка упорно создается только на пользователя, чтобы я там не писал в запросе. Создать несколько одновременных подписок также не получилось, они друг друг друга заменяют и все. Читал, курил, вертел официальный мануал как только можно и на чем можно, но получить несколько подписок не удалось. Пришлось использовать костыли. Схема такая: в 1 инстаграмовском аккаунте зарегил приложение, указав во всех адресах сайта один и тот же "www.сайт.ru" и получил client_id, secret_id, access_token. Во втором инста аккаунте зарегил точно такое же приложение с такими же адресами и тоже получил client_id, secret_id, access_token (этот токен не пригодился, хватило первого).
    Дальше создал 2 разных скрипта с одинаковым запросом за подписку но разными id и secret:
    $client_id = '***';
    $client_secret = '***';
    $base_url = 'https://api.instagram.com/v1/subscriptions/';
    $callback_url = 'https://сайт/callback.php';
    $data = array(
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'object' => "user",    
        'aspect' => "media",
        'verify_token' => 'token',
        'callback_url' => $callback_url
    );
    
    if( $curl = curl_init() ) {
        curl_setopt($curl, CURLOPT_URL, $base_url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);    
        curl_setopt($curl, CURLOPT_POST, TRUE);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
        $result = curl_exec($curl);
        curl_close($curl);
        print_r($result);
    }


    И поочередно их выполнил.
    Содержимое callback.php:

    define('ACCESS_TOKEN','токен_с_инстаграмма_1');
    if (isset ($_GET['hub_challenge'])){
      echo $_GET['hub_challenge'];
      to_log($_GET['hub_challenge'],'hub.log');//пришел ответ на подписку	
    } else {
      $content = file_get_contents('php://input');
      $info = json_decode($content, TRUE);
    	if ($info) {
    		to_log($info,'requests.log'); //сохраняю колбэк инстаграмма когда выходит новая фотка. В нем ничего нужного, кроме id пользователя
    		$url = 'https://api.instagram.com/v1/users/'.$info[0]['object_id'].'/media/recent?access_token='. ACCESS_TOKEN;//подставляю полученный id пользователя чтобы залезть к нему в ленту
                  	if( $curl = curl_init() ) {
                      curl_setopt($curl, CURLOPT_URL, $url);
                      curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
                      $result = curl_exec($curl);
                      $result = json_decode($result); //набор из ~12 последних картинок с описаниями
                      curl_close($curl);
                  	}
    		$text = $result->data[0]->caption->text;//описание к первому фото
    		$image = $result->data[0]->images->standard_resolution->url;//ссылка на первое фото
    	} else {
    		to_log('error;','error.log'); //ничего не получилось вытащить 
    	}
    }
    
    function to_log($log,$filename) {
      if(!$filename) $filename = 'default_log.txt';
      $fh = fopen($filename, 'a') or die('can\'t open file');
      if ((is_array($log)) || (is_object($log))) {
        $updateArray = print_r($log, TRUE);
        fwrite($fh, $updateArray."\r\n");
      } else {
        fwrite($fh, $log . "\r\n");
      }
      fclose($fh);
    }


    Таким образом на callback.php стали приходить уведомления с 2х разных аккаунтов. Чувствую что через одно место, но работает.