Instagram /标签/ \(标签)/媒体/最近的终端没有返回分页?

sha*_*ked 18 ios instagram swift

我一直试图让这个工作大概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)
}
Run Code Online (Sandbox Code Playgroud)

这是我用来为我的请求构建我的URL和参数.我的第一个请求没有nextMaxTagId,并且该请求通过,返回20个图像和一个paginationjson.

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

我正确地签署了我的请求(因为我在整个应用程序中的所有其他API请求都没有问题)并且我不在沙盒模式下.

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

BHe*_*cks -1

似乎:

1)您正在使用Instagram Developer API看似授权的 APIKey,并且您提到您不在Sandbox中,因此您处于Productionapi的环境中。

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

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

3) 根据开发人员文档速率限制,总体上限Production5000 req/hour,其中一些 API 的限制要小得多(有些是30/60 req/hour)。我不确定我看到了tag您所达到的确切速率限制,但由于问题提到:

大概6个小时了,但没有效果

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

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

最后,API 的Instagram发布肯定是非常有限的,并且在可预见的未来将面临速率限制(除非你能够在他们认为值得的特定合作伙伴中以某种方式提升这些内容,尽管我不确定如何实现这一点) 。