【问题标题】:PHP: media posting on twitter?PHP:在推特上发布媒体?
【发布时间】:2016-05-04 20:51:28
【问题描述】:

我一直在尝试使用 PHP 和 twitteroauth.php 将带有简单消息的图像发布到 twitter 上。

但是,每次我运行我的代码时,我只会在 twitter 提要上发布$tweetMessage,而没有任何图像。

我搜索并搜索并阅读了他们自己的文档,但甚至没有让我开始阅读他们自己的文档!这就像一个梦游的人正在写他们的文档。只是一堆行话..

而且大部分关于 STO 的信息要么已经过时,要么指向某个库!

我不想使用任何库,因为我也必须尝试学习其他人的代码,而且 Twitter 肯定会允许在不使用任何第三方库的情况下使用他们自己的 API 发布照片?!

无论如何,这是我的完整代码:

// Include twitteroauth
require_once('inc/twitteroauth.php');

// Set keys
$consumerKey = 'xxxxxxxxxxxxxxxxxxx';
$consumerSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$accessToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$accessTokenSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// Create object
$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);

// Set status message
$tweetMessage = 'This is a tweet to my Twitter account via PHP.';

$image_path="https://www.google.co.uk/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";

$handle = fopen($image_path,'rb');
$image  = fread($handle,filesize($image_path));
fclose($handle);

// Check for 140 characters
if(strlen($tweetMessage) <= 140)
{
    // Post the status message
    $tweet->post('statuses/update', array('media[]' => "{$image};type=image/jpeg;filename={$image_path}", 'status' => $tweetMessage));
}

有人可以就这个问题提出建议吗?

提前致谢。

编辑:

我已将代码更改为以下内容,但出现此错误:

{"errors":[{"code":195,"message":"Missing or invalid url parameter."}]}

但我确定图片在指定的 URL/目录上!

这是代码:

require_once 'inc/twitteroauth.php';
define("CONSUMER_KEY", "xxxxxxxxxxxxxxxxx");
define("CONSUMER_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
define("OAUTH_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
define("OAUTH_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");


$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);


$content = $connection->get('images/sign-in-with-twitter-l.png');


$image = 'images/sign-in-with-twitter-l.png';
$status_message = 'Attaching an image to a tweet';
$status = $connection->post('statuses/update_with_media', array('status' => $status_message, 'media[]' => file_get_contents($image)));
echo json_encode($status);

知道为什么会显示此错误吗?

【问题讨论】:

    标签: php twitter


    【解决方案1】:

    将媒体上传到 Twitter 有点复杂。本质上,这是一个三个阶段的过程。

    1. 将照片上传到 Twitter。
    2. 收到来自 Twitter 的 media_id 回复。
    3. 将您的 statusmedia_id 发布到 Twitter。

    这在https://dev.twitter.com/rest/reference/post/media/upload有详细描述

    一般来说,使用像 CodeBird 这样的库会更容易使用,因为他们已经完成了查找所有边缘情况的艰苦工作。

    但是,假设你不想这样做......

    • 将图像发布到/1.1/media/upload.json
    • 接收一些类似 JSON 的文件

    { "media_id": 553656900508606464, "media_id_string": "553656900508606464", "size": 998865, "image": { "w": 2234, "h": 1873, "image_type": "image/jpeg" } } * 发布状态时使用media_id_string。例如

    tweet-&gt;post('statuses/update', array('media_ids' =&gt; $media_id_string, 'status' =&gt; $tweetMessage));

    希望这能让您充分了解正在发生的事情。

    【讨论】:

      【解决方案2】:

      我是这样解决的:

      $tweet_img = 'Path/to/image';
      
      $handle = fopen($tweet_img,'rb');
      $image = fread($handle,filesize($tweet_img));
      fclose($handle);
      
      $parameters = array('media[]' => "{$image};type=image/jpeg;filename={$tweet_img}",'status' => 'Picture time');
      
      
      
      $returnT = $connection->post('statuses/update_with_media', $parameters, true);
      

      糟糕的 twitter API 文档需要改进!!它需要由人类编写,而不是一群梦游僵尸!!!

      当我们尝试使用他们的 API 时,他们把我们置于一个非常令人沮丧的境地......

      他们要么需要停止对 API 的支持并将其全部从公众中删除,要么只是改进他们的文档并为公众编写它,而不仅仅是使用行话词供他们自己使用。

      无论如何,上面的代码使用最新的twitteroauth 可以正常工作

      我希望这可以帮助其他人。 我觉得我浪费了 5 个小时,在他们的网站上应该用简单的英语清楚地提到一些事情!!!

      咆哮和回答,祝你好运.. :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 2015-10-20
        • 1970-01-01
        • 2015-07-06
        • 1970-01-01
        相关资源
        最近更新 更多