【问题标题】:Instagram API /tags/{tag-name}/media/recent changed behaviourInstagram API /tags/{tag-name}/media/最近改变的行为
【发布时间】:2016-07-21 03:38:52
【问题描述】:

我在这个端点上工作了几次,似乎自从本​​周我传递一个 max_id 值后抛出了一个错误,它说:

{
    "meta":  {
        "error_type": "APIInvalidParametersError",
        "code": 400,
        "error_message": "max_id must not be a media id."
    }
}

我不知道在哪里可以找到 api 是否改变了行为或者只是它被破坏了。
小伙伴们,你们有什么想法吗?

我发现的另一个错误是查询此端点时返回的媒体的顺序。这是一个示例数据:

#sample error
[
    Media: 1220853576116214570_1383882821
    Media: 1220853572180739674_233961632
    Media: 1220853571106323542_44255974
    Media: 1220853327487332588_16383867
    Media: 1220853529276039536_37204591
    Media: 1220853517236612185_1342227858
    Media: 1220853478513480317_596571
    Media: 1220853329006327307_299159508
    Media: 1220853296836482014_1829274963
    Media: 1220853282356978078_1498664215
    Media: 1220853191933038656_528166155
    Media: 1220481246711237359_211289081  #MEDIA INCORRECT ORDER
    Media: 1220853144521663282_3026017167
    Media: 1220853127735637950_619046756
    Media: 1220853103550902683_2074401387
    Media: 1220853106444172011_3020165605
    Media: 1220449359646948005_208916789  #MEDIA INCORRECT ORDER
    Media: 1220853071011680880_596571
    Media: 1220852985861033044_446238634
    Media: 1220852995848611111_3098675456
    Media: 1220852944343050919_1126655937
    Media: 1220852926209616200_327453609
    Media: 1220852902671104371_351483533
    Media: 1220852898165133786_207127275
    Media: 1220852887618705294_1736270372
    Media: 1220852850174855566_1133338201
    Media: 1220852831895483805_30557620
    Media: 1220851564341433250_1460935835
    Media: 1220852721064734213_14247170
    Media: 1220852681564341476_1329013696
    Media: 1220852647186623946_2143587522
    Media: 1220852634988856098_6331807
    Media: 1220852621030972511_530287550
]

编辑:我刚刚检查了 python instagram 的客户端已在 9 天前被弃用,并且从 3 月 23 日开始有很多关于 api 行为的 stackoverflow 问题。很多巧合

  • Instagram /v1/tags/{tag-name}/media/recent endpoint doesn't return min_tag_id in pagination block
  • Error 400: Bad request while fetching json data from instagram api via coldfusion
  • API Tags endpoint error - min_id is not a valid cursor for this tag


  • 编辑2:count参数不能大于33,否则省略。换句话说,每个页码的最大记录数是 33

    编辑 3: 由于另一个未记录的行为更改,Python 客户端自 6 月 1 日起中断
      File "/usr/local/lib/python2.7/dist-packages/instagram/bind.py", line 194, in _call
        return method.execute()
      File "/usr/local/lib/python2.7/dist-packages/instagram/bind.py", line 186, in execute
        content, next = self._do_api_request(url, method, body, headers)
      File "/usr/local/lib/python2.7/dist-packages/instagram/bind.py", line 148, in _do_api_request
        obj = self.root_class.object_from_dictionary(entry)
      File "/usr/local/lib/python2.7/dist-packages/instagram/models.py", line 88, in object_from_dictionary
        for comment in entry['comments']['data']:
    KeyError: 'data'
    


    编辑 3 已解决 here

    【问题讨论】:

    • 这周他们的 API 肯定发生了一些变化/损坏。首先,他们将 min/max_tag_id 更改为一些散列字符串,而不是之前的数值。如果您尝试传递旧数值,您将收到您在此处描述的错误消息。对 API 的新请求只会返回哈希字符串,因此您可以使用它。但是 max_tag_id 有问题,它不像以前那样工作。我已经提交了一份报告,但考虑到他们与用户的交流很少......
    • 有没有办法检查 api 状态(如 Twitter)或报告任何问题或类似的东西?
    • 您可以在此处报告问题:instagram.com/developer/clients/manage。我已经这样做了,但我不希望得到他们的回应
    • @Joel 如果他们回答,请随时通知我们。它真的破坏了我们所有的应用程序逻辑,并且第一次请求分页的 min_tag_id 返回 38w 旧数据并不酷。
    • @Joel 做了报告。但这一切都非常令人困惑,如此严肃的公司如何在没有通知甚至编辑过这些更改的文档的情况下做出这样的更改。

    标签: instagram-api


    【解决方案1】:

    您似乎将媒体 ID 作为分页传递。由于 Instagram 更改了分页值,您不能再这样做了。以前是媒体id,现在是字符串。

    当你发出请求时,你会收到这样的 json:

    {
        pagination: {
            next_max_tag_id: ...,
            deprecation_warning: "next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
            next_max_id: ...,
            next_min_id: ...,
            min_tag_id: ...
            ...
        },
        meta: {
            ...
        },
        data: {
            ...
        }
    }
    

    只需在您的请求中使用next_max_id 值作为max_tag_id。那应该行得通。

    【讨论】:

    • 好的,首先:此更改是否记录在案?第二:如果我想从一个 Max_id 搜索到过去,因为我已经使用了这个端点直到它坏了?
    • 遗憾的是它没有记录在案......这种变化发生在几周前。没有更改日志,并且由于字段名称仍然相同,只是值不同,因此它不在文档中。如果此 max_id 是 media_id,恐怕您无法在 max_id 之前搜索媒体。 . 您需要使用分页中提供的新 max_id 向后退,直到到达您想要的位置。
    • 我得到 next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead,但是当我使用 max_tag_id 时,我得到了错误消息:max_id must not be a media id.
    【解决方案2】:

    在 Instagram 真正回复任何人之前,解决此问题的方法是使用旧的和已弃用的 next_max_idnext_max_tag_idmax_tag_id 似乎不知何故在请求响应中完全消失了,并被 next_max_tag_id 取代。

    /tags/{tag-name}/media/recent?access_token={access-token}&next_max_id={next_max_id}

    【讨论】:

    • 不行,参数省略。如果你没有通过它,它会返回相同的结果
    • 我得到 next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead,但是当我使用 max_tag_id 时,我得到了错误消息:max_id must not be a media id.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2017-03-21
    • 2016-07-10
    • 2014-01-04
    • 2016-12-26
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多