将媒体上传到twitter API

时间:2015-01-08 12:43:29

标签: php twitter oauth

我正在尝试通过API将媒体上传到Twitter,但我不断收到“错误请求”错误

HTTP request failed! HTTP/1.1 400 Bad Request

这是我的电话

$image = 'http://4.bp.blogspot.com/-JOqxgp-ZWe0/U3BtyEQlEiI/AAAAAAAAOfg/Doq6Q2MwIKA/s1600/google-logo-874x288.png';

$media_ids = $twitterService->request('https://upload.twitter.com/1.1/media/upload.json', 'POST', array(
    'media' => $image
));

我正在使用oauth进行身份验证,并且任何其他类型的请求似乎都起作用,例如获取用户时间轴。

我也在使用libary - https://github.com/Lusitanian/PHPoAuthLib - 它为我添加了类似oauth令牌的东西。有什么想法吗?

编辑:

我还尝试使用base64图像发出相同的请求,如下所示:

$path = '../uploads/0PQ4j0yfMl1420641234.jpg';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

$media_ids = $twitterService->request('https://upload.twitter.com/1.1/media/upload.json', 'POST',     array(
        'media_data' => $base64
    ));

并抓住原始图像

$image = file_get_contents($path);

$media_ids = $twitterService->request('https://upload.twitter.com/1.1/media/upload.json', 'POST', array(
        'media' => $image
    ));

1 个答案:

答案 0 :(得分:1)

正如the docs所说 - 图像应该是图像的base64编码字节,而不是图像的URL。