Twitter API OAuth文件上传出现错误“您必须提供可读文件”

时间:2019-01-13 12:54:59

标签: php file-upload twitter oauth-2.0 twitter-oauth

我已经按照this教程将媒体上传到twitter API。文本上传效果很好,但是如果我要上传媒体,则会收到错误消息:

  

致命错误:/hp/be/ac/on/www/vendor/abraham/twitteroauth/src/TwitterOAuth.php:297中未捕获的异常“ InvalidArgumentException”,消息为“您必须提供可读文件”:堆栈跟踪:# 0 /hp/be/ac/on/www/vendor/abraham/twitteroauth/src/TwitterOAuth.php(266):Abraham \ TwitterOAuth \ TwitterOAuth-> uploadMediaNotChunked('https://upload .... ,, Array) #1 /hp/be/ac/on/www/posten.php(288):Abraham \ TwitterOAuth \ TwitterOAuth-> upload('https://upload ....',Array)#2 {main}被抛出/hp/be/ac/on/www/vendor/abraham/twitteroauth/src/TwitterOAuth.php,第297行

这是我的代码:

$twitter = new TwitterOAuth(
    $config['consumer_key'],
    $config['consumer_secret'],
    $OAuthToken,
    $OAuthTokenSecret
);

$post_media = $twitter->upload('media/upload', ['media' => "/uploads/Bilder/1.png"]);

/**$parameters = [
    'status' => "Test description",
    'media_ids' => implode(',', [$post_media->media_id_string])
];

$result = $twitter->post('statuses/update', $parameters);**/

就像您看到的一样,我什至从$parameters开始评论了该部分,但这并没有改变结果。因此错误必须在上传行中。
我已经尝试按照https://github.com/abraham/twitteroauth/issues/562中的说明用media/upload替换https://upload.twitter.com/1.1/media/upload.json,但这也无济于事。
我检查了链接/uploads/Bilder/1.png是否正确,并引用了我服务器上的图像。那么,为什么脚本不起作用?

有人知道解决方案吗?

2 个答案:

答案 0 :(得分:0)

回答迟了,但可能会对某人有所帮助。下面的代码非常完美!

require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret);
$content = $twitter->get("account/verify_credentials");
$tweet = "My tweet";
$imageMedia = $twitter->upload('media/upload', array('media' => '/path/to/image/image_name.png'));
$parameters = array("status" => $tweet, "media_ids" => $imageMedia->media_id_string);

$statuses = $twitter->post("statuses/update", $parameters);

答案 1 :(得分:0)

同样的问题,不同的解决方案。

回答:“ upload()函数需要本地文件。URL不起作用,必须先下载它。

看看这个问题:https://github.com/abraham/twitteroauth/issues/697