【问题标题】:how to get pictures url from instagram API Json result如何从 instagram API Json 结果中获取图片 url
【发布时间】:2014-05-11 13:24:57
【问题描述】:

我目前正在尝试从我的 instagram 提要中获取我的图片的所有 URL,并将它们打印在一个简单的 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

如果有人愿意帮助我。

【问题讨论】:

    标签: php json api instagram


    【解决方案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 manual 了解如何使用数组。

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

    【讨论】:

    • 非常感谢这解决了我的问题,我还有一个问题。现在它会打印出图像 URL,例如 [0] => origincache-frc.fbcdn.net/… 如果我想将所有这些图像添加到画廊,我将如何将它们分开并将它们全部列在画廊中? sudocode
    • 答案已更新,向您展示如何使用该数组。
    • 还有一个:我必须手动输入我的用户 ID,但我可以通过在 accesstoken= 之后添加 {$authObj->access_token} 来检索 accesstoken。我尝试通过键入这样的 {$authObj->id} 来执行相同的 för id,因为我认为 $authObj 包含用户 ID,并且当我回显结果时它的格式与 Accesstoken 相同。但是当我像这样在 URL 中输入 {$authObj->id} 时: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}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多