При загрузке OAuth-файла через API Twitter выдается сообщение «Вы должны предоставить читаемый файл» - PullRequest
0 голосов
/ 13 января 2019

Я следовал этому учебнику, чтобы сделать загрузку мультимедиа в Twitter API. Загрузка текста работает отлично, но если я хочу загрузить медиа, я получаю сообщение об ошибке:

Неустранимая ошибка: необработанное исключение «InvalidArgumentException» с сообщением «Вы должны предоставить читаемый файл» в /hp/be/ac/on/www/vendor/abraham/twitteroauth/src/TwitterOAuth.php:297 трассировки стека: # 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, но это не изменило результат. Поэтому ошибка должна быть в строке загрузки.
Я уже пытался заменить media/upload на https://upload.twitter.com/1.1/media/upload.json, как сказано в https://github.com/abraham/twitteroauth/issues/562,, но это тоже не помогло.
Я проверил, что ссылка /uploads/Bilder/1.png верна и ссылается на изображение на моем сервере. Так почему же скрипт не работает?

Кто-нибудь знает решение этой проблемы?

1 Ответ

0 голосов
/ 08 августа 2019

Уже поздно отвечать, но кто-то может помочь. Код ниже работает просто отлично!

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);
...