tmhOAuthでtwitterに画像投稿
tmhOAuthとTwitterAPIを使ってサーバーに保存してある画像をtwitterに投稿したいと考えています。
tmhOAuthを使ってつぶやき(文字列)の投稿は成功しています。
画像の投稿になるとうまく行きません。ウェブ上で情報を探せるだけ探して数日間トライしてみましたが、どれも成功には至りませんでした。
「開発環境」
PHP:5.5
Cakephp:2.5
function test(){
$twConf = array(
'consumer_key' => 'xxxxxxxxxxxxxxxxxxxxxxx',
'consumer_secret' => 'xxxxxxxxxxxxxxxxxxxxxxx',
'user_token' => 'xxxxxxxxxxxxxxxxxxxxxxx',
'user_secret' => 'xxxxxxxxxxxxxxxxxxxxxxx',
'curl_ssl_verifypeer' => false,
);
$tmhOAuth = new tmhOAuth($twConf);
$image ='http://www.example.com/img/test.jpg';
$message='hoge hoge';
$params = array(
'media[]' => "@{$image}",
'status' => "{$message}"
);
$code = $tmhOAuth->request('POST', $endpoint, $params, true, true);
if ($tmhOAuth->response["code"] == 200){
var_dump($tmhOAuth->response["response"]);
} else {
var_dump($tmhOAuth->response["error"]);
}
}
このソースを実行するとエラーレスポンスが返らずに$codeの中身は403となります。
(何かのエラーが返ってきているようです)
上記のやり方以外にも
----------------------------------------------------------------
$file = 'http://www.example.com/img/test.jpg';
$image = file_get_contents( $file );
$imagesize = getimagesize( $file );
$content_base64 = base64_encode($image);
$api_url = 'https://api.twitter.com/1.1/statuses/update_with_media.json';
$params = array(
'status' => $message,
'media[]' => $content_base64 . ";type=" . $imagesize['mime'] . ";filename=" . basename( $file ),
);
----------------------------------------------------------------
という方法を行ってみましたが、エラーが「0」という形で返ってきてしまいます。
twitter developersのwebsite・Callback URLは自分のドメイン名を設定しています。アクセスレベルは「Read and write」です。
文字の投稿はできているので、$params 周辺の記載に問題があると考えています。
TwitterAPI関係に詳しい方がおられましたら、よい方法を教えていただければと思います。
宜しくお願い致します。
お礼
実は説明書やマニュアルには書いていなかったのでわからなかったのですが、ソースコードを見たらそのようなクラスのメソッドがありました。 とても助かりました、どうもありがとうございます!