2014-05-11 68 views
0

我目前正试图从我的instagram提要中获取所有图片的网址,并在简单的HTML图库中打印出来。如何从instagram API获取图片url Json结果

我已经使用“一些帮助”进行身份验证并获得了一个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

如果有人能好心帮助我。

回答

7

第一个循环将给出一个具有所有分辨率的图像数组,而第二个循环只有一个只有standard_resolutions的数组,使用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 manual

foreach($standard as $url) { 
    echo "<img src=\"$url\">"; 
} 
+0

非常感谢你解决了我的问题,我还有一个问题。现在,它会打印出图像URL,例如[0] => http://origincache-frc.fbcdn.net/10254169_321592081322090_1472436591_n.jpg如果我想将所有这些图像添加到图库中,我将如何区分它们并获取它们所有列在画廊? sudocode user3616238

+0

答案已更新,向您展示如何使用该数组。 – Danijel

+0

再次非常感谢你,你是一个救世主:) – user3616238