我正在更改我的PHP代码以与新API兼容,并且我坚持使用update_with_media。 这是我的代码:
$image = constant('PATH_UPLOAD').$db_data['post_image'];
$connection = new TwitterOAuth(constant('CONSUMER_KEY'), constant('CONSUMER_SECRET'), $db_data['tw_oauth_token'], $db_data['tw_oauth_secret']);
$content = $connection->OAuthRequest('https://api.twitter.com/1.1/account/verify_credentials.json', 'GET', array());
$twitterInfo = json_decode($content);
$resp_tw = $connection->OAuthRequest('https://api.twitter.com/1.1/statuses/update_with_media.json', 'POST',
array(
'status' => html_entity_decode($db_data['post_text'],ENT_QUOTES,'UTF-8'),
'media[]' => "@{$image}"
)
);
它返回
{"errors":[{"code":189,"message":"Error creating status"}]}
可能是什么问题/我做错了什么?
答案 0 :(得分:7)
$tmhOAuth = new tmhOAuth(array(
'consumer_key' => 'abc',
'consumer_secret' => 'abc',
'user_token' => 'abc',
'user_secret' => 'abc',
));
$response = $tmhOAuth->request('POST', $tmhOAuth->url('1.1/statuses/update_with_media'),
array(
'status' => $message,
'media[]' => file_get_contents($image)
));
if ($response != 200) {
//Do something if the request was unsuccessful
}
我的代码测试https://twitter.com/wallapps/status/357137553691906048
答案 1 :(得分:1)
虽然这个问题已经有几个月了,但我想我会回答这个问题,因为我花了几个小时的时间来完成update_with_media的工作并且无法在网上找到满意的答案。
不幸的是,Twitter API错误消息并不具体。我能够弄清楚foll twitter的错误:
“错误无法验证您” - 可能意味着您的OAuth签名基本字符串不正确
“错误错误或缺少uri” - 可能意味着您并未严格遵循Twitter在请求正文中所期望的格式。可能就像在您的请求正文中缺少\ n一样简单
要使update_with_media有效,这些提示可能有所帮助:
请求的内容类型应为multipart / form-data
请求正文应包含twitter期望media []和状态的两个元素,格式正确(RFC 2388)