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 图片未显示在提要中的主要内容,如果未能解决你的问题,请参考以下文章

我可以在引导弹出窗口中显示 Twitter 提要吗?

在Wordpress中显示Twitter提要

Facebook API 提要未显示标题/消息

twitter api 未正确验证

OpenCV 网络摄像头提要未在 PictureBox Visual Studio 2015 中显示

Twitter 搜索标签示例 API v1.1