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

时间:2016-04-30 13:19:00

标签: ios swift instagram

我一直试图让这个工作大概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)
}

这是我用来为我的请求构建我的网址和参数。我的第一个请求没有nextMaxTagId,请求通过,返回20张图片和pagination json。

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

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

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

1 个答案:

答案 0 :(得分:-1)

似乎:

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

  

我正试图从单个标签中获取100张,200张或500张照片

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

3)根据developer documentation rate limitsProduction上的总上限为5000 req/hour,其中几个API限制为更小的限制(有些是30/60 req/hour)。我不确定我是否会看到您确定的tag速率限制,但问题提到:

  

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

你也可能每小时达到整体每小时的要求限制。

我绝对知道这不是我喜欢的答案,因为它实际上是在说: you're stuck 。我之前实际上已经玩过速率限制,我发现它们极其有限(双关语完全有意)。唯一的另一个选择,虽然不是“在板上”,但是要抓取Instagram本身来获取您需要的信息。我说它不是“在板上”因为如果你需要在网页上找不到信息,你理论上可以通过一些小的逆向工程(即使用HTTP代理欺骗移动流量)来刮取移动API系统)。

最后,API Instagram发布的内容肯定非常有限,并且在可预见的未来将面临费率限制(除非你能以某种方式解除他们在某种程度上认为值得的特定合作伙伴关系,尽管我是不知道如何处理这个问题)。