2015-02-16 2 views
0

Я пытаюсь создать небольшое приложение instagram только на PHP (без базы данных) и не получая access_token (просто мой client_id). До сих пор так хорошо (т. Е. Ввод user_id возвращает фотографии за последние 30 дней, с lik-count и created_time, в таблице), пока я не получаю разбивку на страницы. Как и ожидалось, я хочу нажать кнопку «больше», которая загружает следующий json-файл, а добавляет дополнительные фотографии в существующую таблицу, но она там разваливается ... Вот что у меня есть, работает, за исключением разбивки на страницы попытка.Отображение API-схемы Instagram в PHP

Примечание: это внутреннее приложение, так что чувствительность моего client_id не является проблемой, если она подвергается

<?php 
if (!empty($_GET['user_id'])){ 
    $user_id = ($_GET['user_id']); 
    $instagram_url = 'https://api.instagram.com/v1/users/' . $user_id . '/media/recent/?client_id=MY_CLIENT_ID'; 
    $instagram_json = file_get_contents($instagram_url); 
    $instagram_array = json_decode($instagram_json, true); 
    } 
?> 

...

<?php 
    if(!empty($instagram_array)){ 

     $instagram_array['pagination'] as $page { // Attempt at pagination 
      echo '<p>' .$page['next_url'].'</p>'; // Attempt at pagination 
     } // Attempt at pagination 

     foreach($instagram_array['data'] as $image){ 
      if ($image['created_time'] > strtotime('-30 days')) { 
       echo '<tr>'; 
       echo '<td>' . date('M d, Y', $image['created_time']) . '</td>'; 
       echo '<td>'.$image['likes']['count'].'</td>'; 
       echo '<td><img src="'.$image['images']['standard_resolution']['url'].'" alt=""/ style="max-height:40px"></td>'; 
       echo '</tr>'; 
     } 
     } 
    } 
    ?> 

    </body> 
</html> 

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

ответ

1

Вы можете указать min_timestamp, чтобы вернуть medias, который был сделан позже этой метки времени

https://api.instagram.com/v1/users/{user_id}/media/recent/?access_token={access_token}&min_timestamp={min_timestamp} 

$ instagram_array [ «пагинация»] [ «next_url»] должны быть удалены, он может включать в свой маркер доступа, который является разумным данные, которые должны быть всегда невидим.

list_ig.php

<? 
$user_id = "..."; 
$access_token = "..."; 
//30 day ago 
$min_timestamp = strtotime("-30 day",time()); 
//pagination feature 
$next_max_id = $_GET['next_max_id']; 

$instagram_url = "https://api.instagram.com/v1/users/" . $user_id . "/media/recent/?access_token=" .$access_token. "&min_timestamp=" . $min_timestamp; 
if($next_max_id != "") 
    $instagram_url .= "&max_id=" . $next_max_id; 

$instagram_json = file_get_contents($instagram_url); 
$instagram_array = json_decode($instagram_json ,true); 
?> 

<? if($instagram_array['pagination']['next_max_id'] != ""): ?> 
<a href="list_ig.php?next_max_id=<?=$instagram_array['pagination']['next_max_id']?>">More</a> 
<? endif;?> 

.... print instagram data.... 

Instagram AJAX Demo

http://jsfiddle.net/ajhtLgzc/

+0

на самом деле, я не получаю access_tokens, и это внутреннее приложение, так что чувствительность client_id не является проблемой. –

+0

ОК, поэтому, как только я удаляю access_token и заменяю client_id (и делаю несколько других небольших настроек), это ** soooo ** близко к тому, что я хочу, но единственное, чего не хватает, это то, что мне нужны новые фотографии, чтобы показать на той же странице, так что новая загруженная страница теперь отобразит 40 изображений (20 оригинальных и 20 новых), а следующий щелчок отобразит 60 изображений и т. д. –

+0

Я полностью хочу поддержать вас за то, что вы меня так близко, но не можете сделайте это, потому что мой представитель слишком низок :( –

Смежные вопросы