提问人:shakked 提问时间:4/30/2016 最后编辑:shakked 更新时间:4/22/2017 访问量:971
Instagram /tags/\(hashtag)/media/recent endpoint 不返回分页?
Instagram /tags/\(hashtag)/media/recent endpoint not returning pagination?
问:
我一直在努力让它工作大约 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。nextMaxTagId
pagination
然后,当我从分页块中提取并使用该参数创建请求时,我又得到了 20 张图像,但它们与以前的图像相同,现在我没有得到分页块。next_max_tag_id
我正确地对我的请求进行了签名(因为我在整个应用程序中的所有其他 API 请求都没有问题),并且我没有处于沙盒模式。
编辑:我也尝试过使用,在下一个请求中仍然没有收到分页。min_tag_id=\(nextMinTagId)
答:
好像:
1) 您正在使用看似授权的 APIKey,并且您提到您不在沙盒中,因此您处于该 api 的环境中。Instagram Developer API
Production
我正在尝试从单个标签中获取 100、200 或 500 张照片
2) 这意味着,结合 ,对于 100,您至少需要进行 5 次调用 (100/20 == 5), 200 == 10, 500 = 25。 returns 20 images and a pagination json
3) 根据开发人员文档的速率限制,总体上限为 ,有几个 API 被限制在更小的限制(有些是)。我不确定我是否看到您正在达到的确切速率限制,但由于问题提到:Production
5000 req/hour
30/60 req/hour
tag
现在大概 6 个小时都无济于事
也有可能您刚刚达到了每小时的总每小时请求限制。
我绝对知道这不是我喜欢给出的答案,因为它本质上是在说:你被困
住了。实际上,我自己以前也玩过速率限制,我发现它们非常有限(双关语完全是有意的)。唯一的其他选择,尽管不是“光明正大”,是自行搜刮您需要的信息。我说它不是“光明正大”的,因为如果你需要在网络抓取中找不到的信息,理论上你可以通过一些小的逆向工程(即使用HTTP代理来系统地欺骗移动流量)来抓取移动API。Instagram
最后,API 发布肯定非常有限,并且在可预见的未来将面临速率限制(除非您可以在他们认为值得的特定合作伙伴关系中以某种方式解除这些限制,尽管我不确定如何解决这个问题)。Instagram
评论
next_url
error_message: Invalid signed-request: Signature does not match
next_url