Instagram /tags/\(hashtag)/media/recent endpoint 不返回分页?

Instagram /tags/\(hashtag)/media/recent endpoint not returning pagination?

提问人:shakked 提问时间:4/30/2016 最后编辑:shakked 更新时间:4/22/2017 访问量:971

问:

我一直在努力让它工作大约 6 个小时,但无济于事,阅读我能找到的有关该主题的每个 stackoverflow 问题。

我正在尝试从单个标签中获取 100、200 或 500 张照片:

func hashtags(hashtag: String, nextMaxTagId: String?) -> RequestParamters {
    var params = "/tags/\(hashtag)/media/recent|access_token=\(accessToken)"
    var parameters = Dictionary<String, AnyObject>()
    parameters["access_token"] = accessToken

    let urlString = "https://api.instagram.com/v1/tags/\(hashtag)/media/recent"
    if let nextMaxTagId = nextMaxTagId {
        params += "|max_tag_id=\(nextMaxTagId)"
        parameters["max_tag_id"] = nextMaxTagId
    }


    let sig = HMAC.signWithKey(C.InstagramClientSecret(), usingData: params)
    parameters["sig"] = sig
    return (urlString: urlString, parameters: parameters)
}

这是我用来为我的请求构造我的 url 和参数的。我的第一个请求没有 ,该请求通过,返回 20 张图像和一个 json。nextMaxTagIdpagination

然后,当我从分页块中提取并使用该参数创建请求时,我又得到了 20 张图像,但它们与以前的图像相同,现在我没有得到分页块。next_max_tag_id

我正确地对我的请求进行了签名(因为我在整个应用程序中的所有其他 API 请求都没有问题),并且我没有处于沙盒模式。

编辑:我也尝试过使用,在下一个请求中仍然没有收到分页。min_tag_id=\(nextMinTagId)

iOS 版 斯威夫特 Instagram

评论

0赞 beyowulf 4/30/2016
你为什么不尝试使用,因为这似乎是Instagram所建议的:“有时你就是吃不饱。出于这个原因,我们提供了一种方便的方法,可以在任何顺序数据请求中访问更多数据。只需调用 next_url 参数中的 url,我们就会使用下一组数据进行响应。 instagram.com/developer/endpointsnext_url
0赞 shakked 4/30/2016
我这样做error_message: Invalid signed-request: Signature does not match
0赞 beyowulf 4/30/2016
当您使用时,您的请求是什么样子的?next_url
0赞 shakked 5/1/2016
我使用他们提供的“next_url”
2赞 beyowulf 5/1/2016
那你为什么认为你会得到这个错误呢?Instagram就是不喜欢你?我怀疑您可能错误地格式化了请求。

答:

-1赞 BHendricks 4/22/2017 #1

好像:

1) 您正在使用看似授权的 APIKey,并且您提到您不在沙盒中,因此您处于该 api 的环境中。Instagram Developer APIProduction

我正在尝试从单个标签中获取 100、200 或 500 张照片

2) 这意味着,结合 ,对于 100,您至少需要进行 5 次调用 (100/20 == 5), 200 == 10, 500 = 25returns 20 images and a pagination json

3) 根据开发人员文档的速率限制,总体上限为 ,有几个 API 被限制在更小的限制(有些是)。我不确定我是否看到您正在达到的确切速率限制,但由于问题提到:Production5000 req/hour30/60 req/hourtag

现在大概 6 个小时都无济于事

也有可能您刚刚达到了每小时的总每小时请求限制。

我绝对知道这不是我喜欢给出的答案,因为它本质上是在说:你被困住了。实际上,我自己以前也玩过速率限制,我发现它们非常有限(双关语完全是有意的)。唯一的其他选择,尽管不是“光明正大”,是自行搜刮您需要的信息。我说它不是“光明正大”的,因为如果你需要在网络抓取中找不到的信息,理论上你可以通过一些小的逆向工程(即使用HTTP代理来系统地欺骗移动流量)来抓取移动API。Instagram

最后,API 发布肯定非常有限,并且在可预见的未来将面临速率限制(除非您可以在他们认为值得的特定合作伙伴关系中以某种方式解除这些限制,尽管我不确定如何解决这个问题)。Instagram