2

来源: https ://github.com/abraham/twitteroauth/pull/137

在上述链接中,Github 用户 Robhaswell 对亚伯拉罕的 TwitterOAuth 代码进行了调整,并添加了upload上传图片的功能。这是对框架的一个很好的补充,但是,新代码没有附加适当的文档或示例,所以我在使用该函数时遇到了一些麻烦:

$image = 'weather.jpg';

$response = $tweet->upload('statuses/update_with_media', array(
    'status' => 'This is a test', 
    'media[]' => "@{$image};type=image/jpeg;filename={$image}")
);

而 weather.jpg 与上面代码的文件位于同一文件夹中。

旁注:代码将通过 cron 执行,并将始终存在于服务器上的图像上传到 twitter。只是为了澄清用户不必先上传他们的图像,然后通过此脚本将它们提交到 Twitter。

谁能指出我正确的方向?

编辑:我知道这个功能不是原始版本的一部分,我已经根据 Robhaswell 的调整更新了 twitteroauth 和 OAuth 代码。

4

2 回答 2

5

由于这个问题仍然相关,但答案现在已经过时,我将继续使用更新的答案更新这个问题。

statuses/update_with_media已被推特弃用。https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update_with_media.html

这是我的工作代码,用于上传和发布带有图片的状态。

$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret);
$content = $twitter->get("account/verify_credentials");
$tweet = "My tweet";
$imageMedia = $twitter->upload('media/upload', array('media' => '/path/to/image/image_name.png'));
$parameters = array(
    "status" => $tweet,
    "media_ids" => $imageMedia->media_id_string);

$statuses = $twitter->post("statuses/update", $parameters);

我只是想我会在这里发布这个,因为我在寻找答案时偶然发现了这个问题。

于 2015-05-07T07:40:28.063 回答
3

由于我一直在努力解决这个问题,我认为回答这个问题可能会对其他人有所帮助。这使用了 abraham 的 twitteroauth 和添加的图像上传功能(代码可以在这里找到

您应该检查您的图像路径是否正确。它必须指向您服务器上的一个文件(相对)。

另外,确保 twitteroauth 文件中的主机是正确的(参见上传功能,它会短暂更改主机 url,这不再是必需的)。你现在应该使用

https://api.twitter.com/1.1/

代替

https://upload.twitter.com/1/

牢记这两件事,遵循代码应该可以工作(对我有用);

$this->api = new TwitterOAuth($consumerKey, $consumerSecret,$token, $token_secret);    
$attachment = "./images/img.jpg";
$image = "@{$attachment};type=image/jpeg";
$status = "Text";
$result = $this->api->upload('statuses/update_with_media',array('status'=>$message,'media[]'=>$image));
于 2013-11-20T14:55:25.463 回答