Twitter API 响应并不总是按预期返回实体媒体

2024-05-22

考虑使用以下命令检索 Twitter 用户的收藏夹列表:abraham/twitteroauth PHP 库 https://github.com/abraham/twitteroauth:

https://api.twitter.com/1.1/favorites/list.json

给定以下参数:

$params = array(
    'screen_name' => $screenName,
    'count' => $count,
    'include_entities' => true,
);

尽管所有请求的推文实际上都在 Twitter 网站上显示/嵌入了照片,但相关的media预计会在以下区域中找到的字段entities父字段并不总是出现在 API 响应中。

这是一条推文 https://twitter.com/BlindTasters/status/798164229060722688其响应包括该字段,以及另一个 https://twitter.com/DamienPiq/status/798642953057013760谁的回应不包括它。你会发现各自的JSON本要点中的回应:https://gist.github.com/davidloubere/8331a2b523772d99c669e1e720aa4afc https://gist.github.com/davidloubere/8331a2b523772d99c669e1e720aa4afc

有人对此有解释吗?


发生这种情况是因为 Twitter 最近宣布了 REST API 更改,引入了两种推文类型:

  • Classic Tweet- Tweet 对象,其中文本的总长度
    内容不超过140个字符
  • Extended Tweet- 包含隐藏实体(例如前导 @mentions 和尾随附件)的 Tweet 对象,以及
    文本内容长度超过 140 个字符。

他们还介绍了Compatibility当您使用 Twitter REST API 时,这是默认模式。还有Extended您应该明确设置。

引用来自文档https://dev.twitter.com/overview/api/upcoming-changes-to-tweets https://dev.twitter.com/overview/api/upcoming-changes-to-tweets:

“将有两种模式将 Tweet JSON 对象渲染到 API 客户端:兼容模式和扩展模式。兼容模式是 公共 REST 和 Streaming API 以及 Gnip 的默认模式 产品,旨在不破坏现有客户。 ...现有文本字段将包含以下内容的截断版本 推文文本,后跟省略号字符、空格和 缩短的自永久链接 URL。 ...现有实体字段 (提及、网址、媒体等),将仅包含以下实体 完全包含在文本值中。”

所以,第一条推文是Classic,第二个是Extended当你获取它时它会被截断Compatibility mode。您可以通过设置获得其完整版本tweet_mode=extended在您的 Twitter REST API 调用中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Twitter API 响应并不总是按预期返回实体媒体 的相关文章