Публикация изображения + статус с помощью API Twitter с помощью php

Я закончил с помощью codebird, а не с TwitterAPIExchange.php. Пожалуйста, см. Мой ответ.

TwitterAPIExchange.php

Я ломаю голову, пытаясь понять, почему мой код не работает. Я могу опубликовать обновление статуса, чтобы щебет, но когда я пытаюсь добавить изображение, похоже, он никогда не публикует его со статусом.

Со многими сообщениями об этом я прочитал, я попробовал их все, применяя примеры мультимедиа, и ни один из них не работает.

Одно дело, что многие из этих сообщений ссылаются на URL-адрес вызова API: https://api.twitter.com/1.1/statuses/update_with_media.json который в соответствии с этой статьей обесценивается.

Новый URL-адрес «Я думаю» – это просто https://api.twitter.com/1.1/statuses/update.json

На данный момент статус загружается отлично, изображение никогда не делает. Может ли кто-нибудь помочь мне с моим кодом, пожалуйста.

 require_once('TwitterAPIExchange.php'); /** Set access tokens here - see: https://dev.twitter.com/apps/ **/ $settings = array( 'oauth_access_token' => "***", 'oauth_access_token_secret' => "***", 'consumer_key' => "***", 'consumer_secret' => "***" ); $url = "https://api.twitter.com/1.1/statuses/update.json"; $requestMethod = 'POST'; $twimage = '60001276.jpg'; $postfields = array( 'media[]' => "@{$twimage}", 'status' => 'Testing Twitter app' ); $twitter = new TwitterAPIExchange($settings); $response = $twitter->buildOauth($url, $requestMethod) ->setPostfields($postfields) ->performRequest(); print_r($response); 

Я оказался не в состоянии использовать этот метод и нашел более актуальное решение. Единственное, что я узнал об использовании php для чириканья изображений с сообщением, – это то, что вам нужно сначала загрузить изображение до твиттера, в котором API вернет вам media_id . Этот media_id связан с изображением. После того, как у вас есть media_id вы связываете этот идентификатор с вашим сообщением и отправляете сообщение с помощью media_id . Это сделало код более понятным, как только я это узнал.

Вместо этого я использовал codebird для получения твитов с php.

Все, что вам нужно сделать, это создать такую ​​функцию

 function tweet($message,$image) { // add the codebird library require_once('codebird/src/codebird.php'); // note: consumerKey, consumerSecret, accessToken, and accessTokenSecret all come from your twitter app at https://apps.twitter.com/ \Codebird\Codebird::setConsumerKey("Consumer-Key", "Consumer-Secret"); $cb = \Codebird\Codebird::getInstance(); $cb->setToken("Access-Token", "Access-Token-Secret"); //build an array of images to send to twitter $reply = $cb->media_upload(array( 'media' => $image )); //upload the file to your twitter account $mediaID = $reply->media_id_string; //build the data needed to send to twitter, including the tweet and the image id $params = array( 'status' => $message, 'media_ids' => $mediaID ); //post the tweet with codebird $reply = $cb->statuses_update($params); } 

Важно, когда вы загружаете API, вы убедитесь, что cacert.pem находится в том же каталоге, что и codebird.php который поставляется с загрузкой. Не просто загрузите файл codebird.php

Также имейте в виду рекомендации Twitter для изображений и видеороликов, касающиеся размеров и параметров.

Убедитесь, что на вашем сервере есть хотя бы версия PHP 5.3 и завиток. Если вы не уверены, что у вас есть, вы можете создать любой .php файл и добавить phpinfo(); и это расскажет вам все, что имеет ваша конфигурация php.

После того, как у вас есть все, что вам нужно сделать, чтобы отправить чириканье с помощью codebird,

 tweet('This is my sample tweet message','http://www.example.com/image.jpg');