【发布时间】:2015-03-06 14:02:50
【问题描述】:
我正在尝试通过 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 进行身份验证,并且任何其他类型的请求似乎都有效,例如获取用户时间表。
我也在使用库 - 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
));
【问题讨论】:
-
嘿@wazzaday,你成功了吗?我正在使用相同的库,并且在尝试发布图像时出现授权错误。如果只是状态文本,一切正常。
-
不幸的是,不支持上传方法,因为 cURL 请求是如何在幕后发生的。我不得不使用一个单独的库,它工作得非常好 - github.com/abraham/twitteroauth - 按照文档提供了一个上传媒体的工作示例。
-
酷,我试试,谢谢!