考虑使用abraham/twitteroauth PHP库检索Twitter用户收藏列表的调用:
https://api.twitter.com/1.1/favorites/list.json
给定以下参数:
$params = array(
'screen_name' => $screenName,
'count' => $count,
'include_entities' => true,
);
尽管所有请求的tweet实际上都在Twitter站点上显示/嵌入照片,但在entities
父字段中期望找到的相关media
字段并不总是存在于API响应中。
这是一条tweet的响应包含该字段,而另一条tweet的响应不包含该字段。您将在此Gist中找到各自的JSON
响应:https://gist.github.com/davidloubere/8331a2b523772d99c669e1e720aa4afc
有人能解释一下吗?
这是因为最近Twitter宣布REST API更改,引入了两种tweet类型:
-
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和流api以及Gnip的默认模式产品,并旨在不打破现有的客户。…的截断版本Tweet文本,后跟一个省略号、一个空格和一个缩短的自永久链接URL. ...现有实体字段(提及、url、媒体等),将只包含完全包含在文本值中。"
所以,第一个Tweet是Classic
,第二个是Extended
,当你在Compatibility mode
中获取它时被截断。你可以通过在你的Twitter REST API调用中设置tweet_mode=extended
来获得它的完整版本。