【问题标题】:Twitter API response not always returning entities media as expectedTwitter API 响应并不总是按预期返回实体媒体
【发布时间】:2016-11-23 06:56:16
【问题描述】:

考虑调用以使用 abraham/twitteroauth PHP library 检索 Twitter 用户的收藏列表:

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

给定以下参数:

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

虽然所有请求的推文实际上都在 Twitter 网站上显示/嵌入了照片,但 API 响应中并不总是出现在 entities 父字段中的相关 media 字段。

Here's a tweet 的响应包含该字段,another one 的响应不包含该字段。您将在此 Gist 中找到相应的 JSON 回复:https://gist.github.com/davidloubere/8331a2b523772d99c669e1e720aa4afc

有人对此有解释吗?

【问题讨论】:

  • 您能否针对这两个示例给出您的查询和 Twitter API 响应?
  • 确保您通过include_entities=true
  • 问题已在上述 cmets 之后更新。

标签: php twitter


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 天哪,这行得通!。标准搜索 api 没有记录这一点,但它仍然有效!
  • 我有这个问题好几天了。它现在就像一个魅力
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
相关资源
最近更新 更多