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関係に詳しい方がおられましたら、よい方法を教えていただければと思います。
宜しくお願い致します。