【问题标题】:Instagram /tags/\(hashtag)/media/recent endpoint not returning pagination?Instagram /tags/\(hashtag)/media/recent 端点不返回分页?
【发布时间】:2016-08-25 14:57:50
【问题描述】:

我一直试图让它工作大约 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 和参数的东西。我的第一个请求没有 nextMaxTagId,该请求通过,返回 20 张图像和一个 pagination json。

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

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

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

【问题讨论】:

  • 您为什么不尝试使用next_url,因为这似乎是 Instagram 建议的内容“有时您无法获得足够的信息。因此,我们提供了一个方便的在任何顺序数据请求中访问更多数据的方法。只需调用 next_url 参数中的 url,我们将使用下一组数据进行响应。" instagram.com/developer/endpoints
  • 我这样做error_message: Invalid signed-request: Signature does not match
  • 当您使用next_url时,您的请求是什么样的?
  • 我使用他们提供的“next_url”
  • 你认为你为什么会得到那个错误呢? Instagram只是不喜欢你?我怀疑您的请求格式可能有误。

标签: ios swift instagram


【解决方案1】:

好像:

1) 您正在使用 Instagram Developer API 和似乎是经过授权的 APIKey,并且您提到您不在 沙盒 中,因此您处于该 @ 的 Production 环境中987654321@。

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

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

3) 根据developer documentation rate limitsProduction 的总上限是5000 req/hour,有几个 API 的限制要小得多(有些是 30/60 req/hour)。我不确定我是否看到您正在达到的确切 tag 速率限制,但由于问题提到:

现在大概 6 个小时都没有用

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

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

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

【讨论】:

    猜你喜欢
    • 2016-07-10
    • 2017-03-21
    • 2016-12-26
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2014-01-04
    • 1970-01-01
    相关资源
    最近更新 更多