как получить URL-адрес изображения из Instagram API Json результат

В настоящее время я пытаюсь получить все URL-адреса моих фотографий из моего канала Instagram и распечатать их в простой HTML-галерее.

Мне удалось с «некоторой помощью» пройти аутентификацию и получить accesstoken, который позволяет мне получить результат JSON, содержащий все мои изображения, но я совершенно не знаком с тем, как получить все изображения с помощью JSON.

Код, который у меня есть, выглядит так:

<?php
session_start();
//require_once 'src/config.php';

$n_client_id = '87fdd319f8244a728a86f3692527fb15';
$n_client_secret = '040d431d4e0247a292612229446b5240';
$n_redurect_uri = 'http://ideweb2.hh.se/~lukpal12/Startsida.php';

//require_once 'src/Instagram.php';
date_default_timezone_set('UTC');

$url = "https://api.instagram.com/oauth/access_token";
$access_token_parameters = array(
    'client_id'     =>     $n_client_id,
    'client_secret'     =>     $n_client_secret,
    'grant_type'        =>     'authorization_code',
    'redirect_uri'      =>     $n_redurect_uri,
    'code'          =>     $_GET["code"]
);
$curl = curl_init($url);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$access_token_parameters);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);

$authObj = json_decode($result);

print_r($result);

$instagram = <<<END
<a href="https://api.instagram.com/v1/users/2912979/media/recent/?access_token={$authObj->access_token}">Get pictars!</a>
END;

echo $instagram;

echo $authObj->access_token;

?>

Поскольку я совершенно новичок в JSON и в том, как с ним работать, я понятия не имею, как должен быть написан код, чтобы делать то, что я прошу.

После некоторого поиска и после видео или двух, объясняющих JSON, мне удалось получить этот код для выполнения Json_decode:

$json = file_get_contents("https://api.instagram.com/v1/users/2912979/media/recent/?access_token=2912979.87fdd31.0949d22f4a714349ae84643c5af165ef");
$data = json_decode($json);
echo $data->standard_resolution[0]->url; 

Но это совсем не работает. У меня есть ссылка на JSON, содержащий все данные здесь:

https://api.instagram.com/v1/users/2912979/media/recent/?access_token=2912979.87fdd31.0949d22f4a714349ae84643c5af165ef

Если бы кто-то был достаточно любезен, чтобы помочь мне.


person user3616238    schedule 11.05.2014    source источник


Ответы (1)


Первый цикл даст массив изображений со всеми разрешениями, а второй — массив только со стандартными разрешениями, используйте print_r для проверки массивов.

$json = file_get_contents("https://api.instagram.com/v1/users/2912979/media/recent/?access_token=2912979.87fdd31.0949d22f4a714349ae84643c5af165ef");
$data = json_decode($json);

// to get the array with all resolutions
$images = array();
foreach( $data->data as $user_data ) {
    $images[] = (array) $user_data->images;
}
// print_r( $images );

// to get the array with standard resolutions
$standard = array_map( function( $item ) {
    return $item['standard_resolution']->url;
}, $images );

// print_r( $standard );

ИЗМЕНИТЬ

Чтобы поместить эти изображения в галерею, используйте цикл foreach. См. руководство по PHP о том, как использовать массив.

foreach( $standard as $url ) {
    echo "<img src=\"$url\">";
}
person Danijel    schedule 11.05.2014
comment
Большое спасибо, это решило мою проблему, у меня есть еще один вопрос. Теперь он выводит URL-адреса изображений, например: / если я хочу добавить все эти изображения в галерею, как мне их разделить и вывести их все в галерею? sudocode ‹img src=‹?php $standard [0]› - person user3616238; 11.05.2014
comment
Ответ обновлен, чтобы показать вам, как использовать этот массив. - person Danijel; 11.05.2014
comment
еще один: мне нужно вручную ввести свой идентификатор пользователя, но я могу получить токен доступа, просто добавив {$authObj-›access_token} после accesstoken= . Я попытался сделать то же самое для идентификатора, набрав вот так {$authObj-›id}, так как я понял, что $authObj также содержит идентификатор пользователя, поскольку он отформатирован так же, как Accesstoken, когда я вывожу результат. Но когда я добавляю {$authObj-›id} в URL-адрес следующим образом: api.instagram.com /v1/users{$authObj-›id}/media/recent/?access_token={$authObj-›access_token} возвращается: api.instagram.com/v1/users//media/recent/?access_token={$authObj-›access_token} - person user3616238; 11.05.2014