在 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】:尝试将&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