Twitter api 1.1 图片未显示在提要中
Posted
技术标签:
【中文标题】Twitter api 1.1 图片未显示在提要中【英文标题】:Twitter api 1.1 images not showing in feed 【发布时间】:2022-01-08 20:06:58 【问题描述】:我有一个推送推文的命令,使用 1.1 版本的 twitter API。
它一直在工作,但最近(不完全确定是什么时候)停止在 Twitter 上发布图片。
通过大量调试,似乎根本没有任何错误,只是提要中没有图像。
这可能是由于 api 的新 v2 发生了变化吗? 是否已弃用此功能?
public function send($message, $media = null, $options = [])
$mediaIds = [];
foreach ((array) $media as $item)
$res = $this->request(
'https://upload.twitter.com/1.1/media/upload.json',
'POST',
null,
['media' => $item]
);
$mediaIds[] = $res->media_id_string;
return $this->request(
'statuses/update',
'POST',
$options + ['status' => $message, 'media_ids' => implode(',', $mediaIds) ?: null]
);
感谢您的任何想法。
mediaIds
array(1)
[0]=>
string(19) "xxxxxxxx"
response from media post
object(stdClass)#1626 (5)
["media_id"]=>
int(xxxx)
["media_id_string"]=>
string(19) "xxxxx"
["size"]=>
int(129032)
["expires_after_secs"]=>
int(86400)
["image"]=>
object(stdClass)#1623 (3)
["image_type"]=>
string(9) "image/png"
["w"]=>
int(400)
["h"]=>
int(400)
Successfully posted item to twitter
object(stdClass)#1625 (23)
["created_at"]=>
string(30) "Thu Dec 02 11:55:42 +0000 2021"
["id"]=>
int(1466375520866775045)
["id_str"]=>
string(19) "1466375520866775045"
["text"]=>
string(20) "New test message 401"
["truncated"]=>
bool(false)
["entities"]=>
object(stdClass)#1624 (4)
["hashtags"]=>
array(0)
["symbols"]=>
array(0)
["user_mentions"]=>
array(0)
["urls"]=>
array(0)
["source"]=>
string(67) "<a href="https://www.co-kinetic.com" rel="nofollow">Co-Kinetic </a>"
["in_reply_to_status_id"]=>
NULL
["in_reply_to_status_id_str"]=>
NULL
["in_reply_to_user_id"]=>
NULL
["in_reply_to_user_id_str"]=>
NULL
["in_reply_to_screen_name"]=>
NULL
["user"]=>
object(stdClass)#1621 (43)
["id"]=>
int(68679793)
["id_str"]=>
string(8) "68679793"
["name"]=>
string(13) "glen lockhart"
["screen_name"]=>
string(12) "glenlockhart"
["location"]=>
string(14) "Sheffield, UK."
["description"]=>
string(68) "I like tech and burritos and probably other things. Mostly burritos."
["url"]=>
NULL
["entities"]=>
object(stdClass)#1627 (1)
["description"]=>
object(stdClass)#1628 (1)
["urls"]=>
array(0)
["protected"]=>
bool(false)
["followers_count"]=>
int(55)
["friends_count"]=>
int(163)
["listed_count"]=>
int(2)
["created_at"]=>
string(30) "Tue Aug 25 12:29:11 +0000 2009"
["favourites_count"]=>
int(109)
["utc_offset"]=>
NULL
["time_zone"]=>
NULL
["geo_enabled"]=>
bool(false)
["verified"]=>
bool(false)
["statuses_count"]=>
int(201)
["lang"]=>
NULL
["contributors_enabled"]=>
bool(false)
["is_translator"]=>
bool(false)
["is_translation_enabled"]=>
【问题讨论】:
从请求中得到什么 “这可能是由于新 v2 api 的变化造成的吗?此功能是否已被弃用?” - 您的通话仍针对 1.1 版本。即使有什么东西被弃用了,这通常只会影响新的 API 版本,在现有 API 版本中进行破坏更改是不应该发生的事情。 那么当你在 foreach 循环之后转储$mediaIds
的内容时,看起来应该是这样吗?
感谢您的回复。媒体上传响应如下所示:``` object(stdClass)#1626 (5) ["media_id"]=> int(1466371341519663105) ["media_id_string"]=> string(19) "1466371341519663105" ["size"] => int(129032) ["expires_after_secs"]=> int(86400) ["image"]=> object(stdClass)#1623 (3) ["image_type"]=> string(9) "image/png" ["w"]=> int(400) ["h"]=> int(400) 所以,我们认为 Twitter 1.1 最近并没有改变 upload.twitter.com/1.1/media/upload.json 周围的任何东西?
我可以确认/1.1/media/upload
API 端点最近没有变化。这应该仍然像过去一样工作。您正在返回 media_id_string
,这是应该发生的。
【参考方案1】:
所以,这是图书馆的问题。
phpfashion.com/twitter-for-php 的 gd。 这提到了这个问题。
twittercommunity.com/t/media-image-doesnt-appear-on-tweet/
来自答案的链接(Andy piper,再次感谢 Andy ;-))
github.com/dg/twitter-php/pull/72
您可以在 repo 中查看链接 301 周围的主要 Twitter 文件的代码
TLDR;替换这个:
elseif ($method === 'GET' && $data)
与:
elseif (($method === 'GET' || $method === 'POST') && $data)
简而言之,它从未奏效。
【讨论】:
代码更改在 dg/twitter-php/src/Twitter.php 中 嘿!您能否以更好的方式构建您的答案?这样可以帮助其他用户更好地理解你的答案,以防他们被困在这个问题上。谢谢!继续贡献:) 我添加了一些链接和一些格式,不知道你还需要什么。希望对你有帮助以上是关于Twitter api 1.1 图片未显示在提要中的主要内容,如果未能解决你的问题,请参考以下文章