Php TwitterAPI告诉我“媒体类型无法识别”。对于始终有效的图像

Php TwitterAPI告诉我“媒体类型无法识别”。对于始终有效的图像,php,image,twitter,Php,Image,Twitter,编辑2020-28-02:这是推特方面的一个错误,谢谢你的帮助。我保留着这本书 尽管投了反对票,但仍要向上提问,因为这种情况可能再次发生,这对其他具有相同错误媒体类型的用户可能很有用 我有一个小应用,我是唯一的用户,每天更新我的主题推特。通过按下一个按钮,它每天从12张图片中发布一张比5MB小得多的jpg图片。它像这样工作了好几个月。现在Twitter告诉我:媒体类型无法识别 症状: 我也不能在Twitter上上传同样的图片。所以我想 我的图片被禁止上传。 我可以上传相同图像的png版本到网站

编辑2020-28-02:这是推特方面的一个错误,谢谢你的帮助。我保留着这本书 尽管投了反对票,但仍要向上提问,因为这种情况可能再次发生,这对其他具有相同错误媒体类型的用户可能很有用

我有一个小应用,我是唯一的用户,每天更新我的主题推特。通过按下一个按钮,它每天从12张图片中发布一张比5MB小得多的jpg图片。它像这样工作了好几个月。现在Twitter告诉我:媒体类型无法识别

症状:

我也不能在Twitter上上传同样的图片。所以我想 我的图片被禁止上传。 我可以上传相同图像的png版本到网站上,但不能通过我的PHP软件。这很奇怪。 我可以从PHP脚本和Twitter网站上传不同的图像。 我用它来编写PHP脚本

我的日志中唯一的错误是:

[22-Jan-2020 08:45:37 UTC]PHP通知:未定义的属性: stdClass::$media\u id\u字符串位于/home/ABC/public\u html/XYZ.php的第行 205

这仅仅意味着:上传没有成功,所以Twitter API在此时没有响应媒体ID,因为它是空的

这是我的脚本,有逻辑来决定文本和让我登录:

require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

define('CONSUMER_KEY', 'my consumer key');
define('CONSUMER_SECRET', 'my consumer secret');
define('ACCESS_TOKEN', 'my access token');
define('ACCESS_TOKEN_SECRET', 'my access secret');

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$postfields = array(
    'media' => base64_encode(file_get_contents($image))
);

$media = $connection->upload('media/upload', ['media' => $image]);

$parameters = [
            'status' => 'my tweet text, never longer than 200 chars'
            'media_ids' => $media->media_id_string
];

$result = $connection->post('statuses/update', $parameters);
我再说一遍:这几个月来没有任何问题,我没有改变任何东西。它刚刚开始发布没有图像的文本

我意识到类似的错误信息也存在类似的问题,但没有一种解决方案对我有效

我重新生成了我的访问令牌和密码:没有任何更改 我尝试了分块上传:同样的结果 我制作了新的jpg文件,尺寸小了1像素,所以我欺骗了Twitter,这可能是另一幅图像:它没有欺骗Twitter 我试着在上传线路后睡觉:这对我来说是不合逻辑和愚蠢的,但我想可能是上传太慢了,因为有一个人在javascript版本上有同样的问题,他就这样解决了
推特的文档说明:

确保POST是一个多部分/表单数据请求。上载文件的原始二进制媒体参数或其base64编码内容媒体\数据参数。尽可能使用原始二进制文件,因为base64编码会导致较大的文件大小

但是,在使用media参数时,您似乎正在上载base64编码的内容。尝试将介质参数更改为介质数据


这可能是最近的更改,或者是最近才实施的更改,因此以前对您有效。

我已经根据这里的另一个问题尝试过了。它没有改变什么。仍然没有媒体id,仍然只发布文本。同样,带有媒体参数的原始二进制文件也会这样做。嗯,您可能有多个问题。它肯定需要设置为媒体数据。事实上,你不能在网站上上传相同的图片也表明这不是API问题,而是图片问题或Twitter问题,就像你说的,可能被阻止了。是的,我在这之后就这样离开了。这也是我最后问这个问题的原因。关键是要把它说出来,这是可能发生的。我认为我的API使用案例是合法的,但从自动调节的角度来看,它可能被视为每天发布相同12张图片的垃圾邮件。作为下一步,我将尝试联系Twitter。昨天1月22日,媒体上传出现了一个临时问题,现在应该得到解决。