【问题标题】:Displaying more than 20 photos in instagram API在 instagram API 中显示 20 多张照片
【发布时间】: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 张图像的限制。我花了很长时间才发现这一点,因为谷歌显示的最佳答案没有提到这一点。所以我现在添加。

标签: javascript jquery instagram


【解决方案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/users{user-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}
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-08-13
            • 2015-02-09
            • 2015-02-09
            • 1970-01-01
            相关资源
            最近更新 更多