在 instagram API 中显示 20 多张照片

Posted

技术标签:

【中文标题】在 instagram API 中显示 20 多张照片【英文标题】:Displaying more than 20 photos in instagram API 【发布时间】:2012-09-07 02:44:11 【问题描述】:

我一直在做一些研究,并试图弄清楚如何显示从 instagram api 中提取的 20 多张图像。我对此很陌生,所以任何帮助将不胜感激!只是想看看有没有解决办法?看到了一些关于添加分页可能会有所帮助的东西。如果是这样的话,关于如何做到这一点的详细信息也会很棒!

这是我目前的代码。

<script type="text/javascript">
    $.ajax(
        type: "GET",
        dataType: "jsonp",
        cache: false,
        url: "https://api.instagram.com/v1/tags/coffee/media/recent?client_id=[]&access_token=[]",
        success: function(data)  
            for (var i = 0; i < 20; i++) 
                $(".instagram").append("<a class='big-square span2' target='_blank' href='" + data.data[i].link +"'><img src='" + data.data[i].images.low_resolution.url +"'></img></a>");
            
        
    );
</script>

【问题讨论】:

另请注意,最近(2015 年 11 月)为沙盒模式下的应用程序引入了 20 张图像的限制。我花了很长时间才发现这一点,因为谷歌显示的最佳答案没有提到这一点。所以我现在添加。 【参考方案1】:

Instagram 对其 API 有 20 张图片限制,请查看此线程和我的回答:

What is the maximum number of requests for Instagram?

编辑:另外,看看THIS

【讨论】:

【参考方案2】:

在 2015 年 11 月 17 日之前创建的任何应用都将继续运行,直到 2016 年 6 月。2016 年 6 月之后,如果未通过审核流程,该应用将自动进入沙盒模式。 沙盒模式是真实的 Instagram 数据(即通常在 Instagram 应用中可见的数据),但具有以下条件:

沙盒中的应用仅限 10 个用户 数据仅限于 10 个用户和每个用户的 20 个最新媒体 降低 API 速率限制

more info

【讨论】:

链接已损坏。【参考方案3】:

尝试将&amp;count=N 添加到请求中,其中 N 是您想要的结果数。

【讨论】:

我试过了,但它仍然只限制我到 20.. 现在我正在考虑使用分页的想法,我认为这是 instagram 背后的最初想法。 &count=33 这个最大值【参考方案4】:

试试这个代码

$api = "https://api.instagram.com/v1/tags/snow/media/recent?client_id=".$client;  

function get_curl($url)   
    if(function_exists('curl_init'))   
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_URL,$url);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
        curl_setopt($ch, CURLOPT_HEADER, 0);  
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);  
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   
        $output = curl_exec($ch);  
        echo curl_error($ch);  
        curl_close($ch);  
        return $output;  
     else  
        return file_get_contents($url);  
      


while ($api !== NULL) 
    $response = get_curl($api);
    foreach(json_decode($response)->data as $item)   
        $src = $item->images->standard_resolution->url;  
        $thumb = $item->images->thumbnail->url;  
        $url = $item->link;  

        $images[] = array(  
        "src" => htmlspecialchars($src),  
        "thumb" => htmlspecialchars($thumb),  
        "url" => htmlspecialchars($url)  
        );  
    echo "<a href='".$src."'><img src='".$thumb."'  width='150' height='150' border='0'></a> ";
     
    $api = json_decode($response)->pagination->next_url;

【讨论】:

你能告诉我 $images[] 数组是用来做什么的吗?此外,我如何插入对 mysql db 的所有响应?我应该把插入语句放在哪里? $images[] 数组存储所有获取的 instagram 图像,具有图像 src、图像拇指和图像 url 属性,您可以使用该数组将图像项插入 mysql 非常感谢您的解释!您能否向我解释一下我应该如何保存 api 响应,以便在显示来自 mysql 的数据时以与 instagram 应用程序(顶部的最新图像)相同的方式获得图片顺序?我应该使用什么排序顺序才能在顶部获得最新图片? mysql中有反向保存选项吗? while ($api !== NULL) 替换为if ($api !== NULL)。否则,这将导致请求继续进行,直到超时。【参考方案5】:

见http://instagram.com/developer/endpoints/。它详细介绍了端点的泛型,还列出了分页属性。简而言之,“分页”响应将包含一个next_url,可用于检索下一组结果。随后检索所有下一个 URL(只要它们在结果中提供)将为您提供完整的集合。

顺便说一句,您可以尝试在请求中增加count 参数。 (根据您使用的 Instagram 库,可以通过 options 哈希或类似的东西提供此类内容。)这可能会为您节省一些额外的请求。我刚刚提到的页面没有指定最大计数值。我怀疑 Instagram 正在动态更改每个端点的最大值。

【讨论】:

【参考方案6】:

通过指定count参数并设置为你想要的数量,你可以获得20多个项目。

但是,Instagram 还对您提出的每个请求施加了 33 个未记录的限制,因此如果您收到超过 33 个请求,则必须分页。

但是,我已经写了Instafetch,它可以帮助您进行分页,它甚至可以为您按标签过滤媒体。所以请随意使用它!

【讨论】:

【参考方案7】:

如果您是沙盒用户,则帖子数不能超过 20 个 请阅读“API BEHAVIOUR”here

【讨论】:

这个答案,包括你的链接,已经在这个帖子中多次给出过,而且都比这个更重要。为了使 SO 对寻求帮助的用户更有帮助,不应重复答案... 链接已损坏。【参考方案8】:

实际上,有机会获得接下来的 20 张照片,然后再获得接下来的 20 张,以此类推... 在 JSON 响应中有一个“pagination”数组:

 "pagination":
      "next_max_tag_id":"1411892342253728",
      "deprecation_warning":"next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
      "next_max_id":"1411892342253728",
      "next_min_id":"1414849145899763",
      "min_tag_id":"1414849145899763",
      "next_url":"https:\/\/api.instagram.com\/v1\/tags\/lemonbarclub\/media\/recent?client_id=xxxxxxxxxxxxxxxxxx\u0026max_tag_id=1411892342253728"
 

这是有关特定 API 调用的信息,对象“next_url”显示获取接下来 20 张图片的 URL,因此只需获取该 URL 并为接下来的 20 张图片调用它...

有关 Instagram API 的更多信息,请查看:https://medium.com/@KevinMcAlear/getting-friendly-with-instagrams-api-abe3b929bc52

【讨论】:

响应 api.instagram.com/v1/usersuser-id/media/recent/?access_token=ACCESS-TOKEN 没有分页字段或 next_url 字段作为响应。知道发生了什么吗? 知道了,在沙盒模式下,它将限制为 20 个媒体,而不是一个更多【参考方案9】:

您可以使用 instafeed 等 Instagram 供稿库。它允许获取 60 张图片(最多)

例如:

<script type="text/javascript">
    var feed = new Instafeed(
        get: 'tagged',
        tagName: 'awesome',
        limit: 20,
        clientId: 'YOUR_CLIENT_ID'
    );
    feed.run();
</script>

limit (number) - 要添加的最大图像数。最多 60 个。

【讨论】:

【参考方案10】:
<script>
    var token = 'your_token',
    userid = your_id,
    num_photos = 12;
    $.ajax(
            url: 'https://api.instagram.com/v1/users/'+userid+'/media/recent',
            dataType: 'jsonp',
            type: 'GET',
            data: access_token: token, count: num_photos,
            success: function(data)
                console.log(data);
            ,
            error: function(data)
            
        );
</script>

12 photos

https://rudrastyh.com/javascript/get-photos-from-instagram.html

【讨论】:

请在代码周围添加一些上下文。此外,代码不会执行。\ 你需要令牌和用户ID。【参考方案11】:

老问题。新答案。

这是 2021 年的解决方案。

您需要使用Instagram Basic Display API 来显示媒体项目。 (这个答案不包括设置)。

假设上述设置正确,您可以使用 limit 参数来控制 API 返回多少媒体结果

默认值为 25(未设置限制),允许的最大值为 100。 (使用分页可能会获得更多结果,但这又是题外话了)。

以下 cURL 代码示例使用 Me endpoint。

GET https://graph.instagram.com/me
    ?fields=fields
    &access_token=access-token
    &limit=required number of items

【讨论】:

以上是关于在 instagram API 中显示 20 多张照片的主要内容,如果未能解决你的问题,请参考以下文章

网站中的 Instagram 动态 - 使用 Instagram 基本显示 API

在 Instagram 基本显示 API 中出现“应用程序限制”错误

使用 Instagram 基本显示 API 获取用户媒体

Instagram API 的 Ajax 分页尝试修复错误

Instagram 基本显示 API

如何在我的网站上显示我的 Instagram 提要?