Twitter上的TwitterAPIExchange发布状态+图片

时间:2014-07-03 09:53:37

标签: php twitter

我有以下工作代码,代码只是在我的推特页面上发布状态和图像。

       require_once('TwitterAPIExchange.php');

        $settings = array(
            'oauth_access_token' => "xxx",
            'oauth_access_token_secret' => "xxx",
            'consumer_key' => "xxx",
            'consumer_secret' => "xxx"
        );

        $url = "https://api.twitter.com/1.1/statuses/update_with_media.json";
        $requestMethod = "POST";

        $tweetmsg = $_POST['post_text'];
        $twimage = "Images/twitter-icon.png";

        $postfields = array(
            'status' => $tweetmsg,
            'media[]' => "@{$twimage}"
        );
        try {
            $twitter = new TwitterAPIExchange($settings);
            $twitter->buildOauth($url, $requestMethod)
                    ->setPostfields($postfields)
                    ->performRequest();

            echo "Success, you just tweeted!";
        } catch (Exception $ex) {
            echo $ex->getMessage();
        }
    }

图像现在放在我项目中的文件夹(图像)中。我希望用户能够从他自己的计算机中选择一个图像,编写一个解密,然后发推特。我发布了以下简单的HTML表单:

<form method="post" action="index.php">
<textarea id="post_text" name="post_text" type="text"></textarea>
<input type="file" name="post_file" id="post_file" multiple accept="image/*" value="Choose a file"/>
<button type="submit" id="btn_submit">Submit</button>
</from>

那么你们有什么提示或指南可以帮助我解决我的问题吗?我是以正确的方式思考还是以其他方式解决问题?谢谢!

3 个答案:

答案 0 :(得分:3)

接受的答案使用折旧的API端点https://dev.twitter.com/rest/reference/post/statuses/update_with_media

这是一个有效的解决方案:

button1_Click

答案 1 :(得分:0)

你必须在这里实施轻微的逻辑 - 现在点击提交请执行以下操作 1.将图像存储在项目的某个文件夹中(请参阅以下代码将图像存储在文件夹中)

upload_file.php //在此处上传文件代码

2.存储文本并将图像名称上传到数据库中。 3.现在图像文件夹中有图像...并且您的数据库中还有图像名称和相应的信息。

4。         $ tweetmsg = $ _POST [&#39; post_text&#39;];         $ twimage =&#34; Images / twitter-icon.png&#34 ;; //在此之前

   retrive the last inserted row and fetch message and image name 

   $tweetmsg = $row['msg'];
   $image = $row['image_name'];
    $twimage = "Images/".$image;

我希望这对你有用..谢谢

答案 2 :(得分:0)

这比我想象的容易得多,我只是使用$ _FILES将图像存储在一个变量中,所以我可以在$ postfields数组中使用它。

$url_media = "https://api.twitter.com/1.1/statuses/update_with_media.json";
$requestMethod = "POST";

$tweetmsg = $_POST['post_description'];
$twimg = $_FILES['pictureFile']['tmp_name'];

    $postfields = array(
        'status' => $tweetmsg,
        'media[]' => '@' . $twimg
    );
    try {
        $twitter = new TwitterAPIExchange($settings);
        $twitter->buildOauth($url_media, $requestMethod)
                ->setPostfields($postfields)
                ->performRequest();

        echo "You just tweeted with an image";
    } catch (Exception $ex) {
        echo $ex->getMessage();
    }