我已经按照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
是否正确,并引用了我服务器上的图像。那么,为什么脚本不起作用?
有人知道解决方案吗?
答案 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不起作用,必须先下载它。”