我最终使用的是codebird,而不是TwitterAPIExchange.php。请看我的答案。
我绞尽脑汁想弄清楚为什么我的代码无效。我可以将状态更新发布到Twitter,但是当我尝试添加图片时,它似乎永远不会以状态发布。
关于这个问题我已经阅读了很多posts我已经尝试了所有应用媒体示例,但似乎都没有。
有一件事是,这些帖子中的很多都引用了https://api.twitter.com/1.1/statuses/update_with_media.json
的API调用网址,根据this article折旧了该网址。
新网址“我认为”只是https://api.twitter.com/1.1/statuses/update.json
此时状态上传很好,图像永远不会。任何人都可以帮我解决我的代码。
require_once('TwitterAPIExchange.php');
/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
'oauth_access_token' => "***",
'oauth_access_token_secret' => "***",
'consumer_key' => "***",
'consumer_secret' => "***"
);
$url = "https://api.twitter.com/1.1/statuses/update.json";
$requestMethod = 'POST';
$twimage = '60001276.jpg';
$postfields = array(
'media[]' => "@{$twimage}",
'status' => 'Testing Twitter app'
);
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->buildOauth($url, $requestMethod)
->setPostfields($postfields)
->performRequest();
print_r($response);
答案 0 :(得分:10)
我最终无法使用此方法并找到了更新的解决方案。我学习使用PHP通过消息发送图片的一件事是,您必须先将图像加载到Twitter,然后API会将media_id
返回给您。 media_id
与图像相关联。获得media_id
后,您将该ID与您的消息相关联,然后使用media_id
发送消息。这使得代码在我了解之后变得更有意义。
我使用codebird来实现与php的推特。
你所要做的就是创建一个像这样的函数
function tweet($message,$image) {
// add the codebird library
require_once('codebird/src/codebird.php');
// note: consumerKey, consumerSecret, accessToken, and accessTokenSecret all come from your twitter app at https://apps.twitter.com/
\Codebird\Codebird::setConsumerKey("Consumer-Key", "Consumer-Secret");
$cb = \Codebird\Codebird::getInstance();
$cb->setToken("Access-Token", "Access-Token-Secret");
//build an array of images to send to twitter
$reply = $cb->media_upload(array(
'media' => $image
));
//upload the file to your twitter account
$mediaID = $reply->media_id_string;
//build the data needed to send to twitter, including the tweet and the image id
$params = array(
'status' => $message,
'media_ids' => $mediaID
);
//post the tweet with codebird
$reply = $cb->statuses_update($params);
}
下载API非常重要,请确保cacert.pem
与下载附带的codebird.php
位于同一目录中。 不要只下载 codebird.php
另外keep in mind Twitter指导与尺寸和参数相关的图像和视频。
确保您的服务器上至少启用了php 5.3版和curl。如果您不确定自己拥有什么,可以创建任何.php
文件并添加phpinfo();
,这将告诉您php配置的所有内容。
一旦你掌握了所有这些,那么你需要做的就是用codebird发送推文
tweet('This is my sample tweet message','http://www.example.com/image.jpg');