2016-05-04 1 views
1

私は、PHPとtwitteroauth.phpを使って簡単なメッセージでTwitterに投稿しようとしています。PHP:Twitterでの投稿のメディア?

しかし、コードを実行するたびに、$tweetMessageは画像なしでTwitterフィードに公開されます。

私は自分のドキュメントを検索して検索して読んでいますが、自分のドキュメントで始めることさえできませんでした。睡眠ウォークをしていた人のようにそのドキュメンテーションを書いていました。専門用語だけ。

STOに関する情報のほとんどは、古くなっているか、ライブラリを指しています!

私は他の誰かのコードも習得しなければならないので、ライブラリを使用したくないですし、確かにTwitterの写真はサードパーティのライブラリを使わずに独自のAPIを使って公開することができますか?

任意の方法、これは私の完全なコードです:

// Include twitteroauth 
require_once('inc/twitteroauth.php'); 

// Set keys 
$consumerKey = 'xxxxxxxxxxxxxxxxxxx'; 
$consumerSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
$accessToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
$accessTokenSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 

// Create object 
$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); 

// Set status message 
$tweetMessage = 'This is a tweet to my Twitter account via PHP.'; 

$image_path="https://www.google.co.uk/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"; 

$handle = fopen($image_path,'rb'); 
$image = fread($handle,filesize($image_path)); 
fclose($handle); 

// Check for 140 characters 
if(strlen($tweetMessage) <= 140) 
{ 
    // Post the status message 
    $tweet->post('statuses/update', array('media[]' => "{$image};type=image/jpeg;filename={$image_path}", 'status' => $tweetMessage)); 
} 

誰かがこの問題について助言してもらえますか?

ありがとうございます。

EDIT:

私を次のように私のコードを変更しましたし、私はこのエラーを取得する:

{"errors":[{"code":195,"message":"Missing or invalid url parameter."}]} 

しかし、私は画像が指定されたURL /ディレクトリにあると確信しています!

require_once 'inc/twitteroauth.php'; 
define("CONSUMER_KEY", "xxxxxxxxxxxxxxxxx"); 
define("CONSUMER_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxx"); 
define("OAUTH_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
define("OAUTH_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 


$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET); 


$content = $connection->get('images/sign-in-with-twitter-l.png'); 


$image = 'images/sign-in-with-twitter-l.png'; 
$status_message = 'Attaching an image to a tweet'; 
$status = $connection->post('statuses/update_with_media', array('status' => $status_message, 'media[]' => file_get_contents($image))); 
echo json_encode($status); 

このエラーが表示されている理由を任意のアイデア:

これは、コードのですか?

答えて

0

私はこのようにそれを解決:

$tweet_img = 'Path/to/image'; 

$handle = fopen($tweet_img,'rb'); 
$image = fread($handle,filesize($tweet_img)); 
fclose($handle); 

$parameters = array('media[]' => "{$image};type=image/jpeg;filename={$tweet_img}",'status' => 'Picture time'); 



$returnT = $connection->post('statuses/update_with_media', $parameters, true); 

恐ろしいTwitterのAPIドキュメントを改善する必要があります!睡眠ウォーキングゾンビの束とは対照的に、人間によって書き込まれる必要があります!

これは、彼らが我々は彼らのAPIを使用しようとするときに私たちを入れていることは非常にイライラするような状況である...

彼らのどちらかが、彼らのAPIのサポートを停止し、公衆からそれをすべて削除するか、単に自分のドキュメントを改善し、書く必要がありますそれは一般の人々のためだけでなく、専門用語を使用して自分自身のために使用する。

任意の方法、上記のコードは、私はこれが私の状況で他人を助け願っています、最新のtwitteroauth

を使用して正常に動作します。 私は何かのために5時間を無駄にしているはずです。

ランタンと回答&幸運.. :)

0

Twitterにメディアをアップロードするのはやや複雑です。本質的には、それは3段階のプロセスです。

  1. 写真をTwitterにアップロードする。
  2. media_idをTwitterから受信します。
  3. statusmedia_idをTwitterに投稿してください。

これは、一般的に言ってhttps://dev.twitter.com/rest/reference/post/media/upload

で非常に詳細に説明されて、それは彼らがすでにすべてのエッジケースを見つけるのハードワークをやったとしてCodeBirdのようなライブラリを使用するために使用するために簡単です。 * media_id_stringとき、あなたがそれを行うにはしたくないと仮定し

しかし、... /1.1/media/upload.json

  • に画像が
  • { "media_id": 553656900508606464, "media_id_string": "553656900508606464", "size": 998865, "image": { "w": 2234, "h": 1873, "image_type": "image/jpeg" } } のようないくつかのJSONをバック受信

    • POST使用しますあなたはステータスを投稿します。 e。g。

      tweet->post('statuses/update', array('media_ids' => $media_id_string, 'status' => $tweetMessage));

      うまくいけば、それは何が起こっているかを理解するのに十分なあなたを与えます。