Javascript Instagram API分页-上一页
我正在用Jquery获取Instagram用户的媒体 我需要获得所有用户介质,但Instagram API介质限制仅为20,API分页只返回下一个链接。没有以前的链接 我写的代码有点像这样,这是下一个工作,但不是上一个工作。我把它堆在这里Javascript Instagram API分页-上一页,javascript,jquery,instagram,instagram-api,Javascript,Jquery,Instagram,Instagram Api,我正在用Jquery获取Instagram用户的媒体 我需要获得所有用户介质,但Instagram API介质限制仅为20,API分页只返回下一个链接。没有以前的链接 我写的代码有点像这样,这是下一个工作,但不是上一个工作。我把它堆在这里 function instaPhotos(page) { var $limit = 1; var $token = $('.instagram').data('instagramtoken'); var $nextId = $('.instagram').
function instaPhotos(page) {
var $limit = 1;
var $token = $('.instagram').data('instagramtoken');
var $nextId = $('.instagram').attr('data-instagramnext');
var $pageNumber = parseInt(localStorage.getItem('page'));
switch (page){
case 'next':
localStorage.setItem('page', ($pageNumber+1));
var $url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + $token + '&count=' + $limit + '&max_id=' + $nextId
break;
case 'prev':
localStorage.setItem('page', ($pageNumber-1));
var $url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + $token + '&count=' + $limit + '&min_id=' + $nextId
break;
default:
localStorage.setItem('page', 1);
var $url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + $token + '&count=' + $limit
}
console.log($pageNumber);
console.log($url);
$.ajax({
method: "GET",
url: $url,
dataType: "jsonp",
context: this,
success: function (r) {
if (r.pagination.next_max_id){
$('.instagram').attr('data-instagramnext', r.pagination.next_max_id);
}
// photo actions here.
}
});
}
我测试了
min\u id
,看起来它在沙盒模式下被破坏了,但是它在旧的API上正常工作,就像在上一样
您可以在此处测试沙箱模式:首先:您可以将介质限制提高到最多33张照片。您应该在查询字符串上使用count参数: 即将浏览到上一页,在我看来,Instagram的回复将始终是最新发布的照片 从Instagram API:
MIN_TAG_ID Return media before this min_tag_id.
MAX_TAG_ID Return media after this max_tag_id.
让我们想想3页(从id#1到id#100):
第一页:
next_min_id #0
photo #1
photo #2
photo #3
...
photo #33
next_max_tag_id #34
第二页:
next_min_id #34 (equals to next_max_tag_id of first page)
photo #35
photo #36
photo #37
...
photo #66
next_max_tag_id #67
第三页:
next_min_id #67 (equals to next_max_tag_id of second page)
photo #68
photo #69
photo #70
...
photo #99
next_max_tag_id #100
查询字符串参数max_tag_id限制结果的顶部,而min_tag_id限制结果的底部。因此,如果仅使用min_tag_id作为参数,则响应将与第一页相等,而不管页面min_tag_id值来自何处。第一页(#1,#2,#3…)的所有照片都位于任何其他页面(#34和#67)的min#u tag_id之前,并且是最新的
我认为要完成这项任务,唯一的方法是使用max_tag_id querystring参数或next_url result(整个url都可以使用-更简单)
您应该保存或最大化标记id或(更好更快)整个结果,并控制代码上的逻辑。工作示例:
var token = "<your_access_token>";
var nextURL = "https://api.instagram.com/v1/tags/riodejaneiro/media/recent?count=33&access_token=" + token;
var currentPage = 0;
var pages = new Array();
$(function() { requestInstagram(); });
function previousPage() {
currentPage = (currentPage>0) ? currentPage-1 : 0;
// show photos of currentPage
console.log("Page " + currentPage);
console.log("First photo:" + pages[currentPage][0].id);
}
function nextPage() {
if (++currentPage < pages.length ) {
// show photos of currentPage
console.log("Page " + currentPage);
console.log("First photo:" + pages[currentPage][0].id);
} else {
requestInstagram();
}
}
function requestInstagram() {
$.ajax({
method: "GET",
url: nextURL ,
dataType: "jsonp",
context: this,
success: function (r) {
if (r.meta.code == "200") {
pages[pages.length] = r.data;
// show photos here
console.log("Page " + currentPage);
console.log("First photo:" + pages[currentPage][0].id);
nextURL = r.pagination.next_url; // you should implement a way to identify the last page
console.log(nextURL);
}
}
});
}
var-token=”“;
var nextURL=”https://api.instagram.com/v1/tags/riodejaneiro/media/recent?count=33&access_token=“+代币;
var-currentPage=0;
var pages=新数组();
$(函数(){requestInstagram();});
函数previousPage(){
currentPage=(currentPage>0)?currentPage-1:0;
//显示当前页面的照片
控制台日志(“页面”+当前页面);
console.log(“第一张照片:+pages[currentPage][0].id);
}
函数nextPage(){
如果(++currentPage
祝你好运 胡猜,你有没有试着把
min\u id
改成max\u id
?是的,我改了,但不起作用,你确定吗,先生?当我使用min_id参数进行测试时,api始终返回我的最后一张照片。我就是这样用的