1

我是PHP新手,所以请保持足够简单^^..

我尝试使用 api 将图像上传到 Twitter。

当文件在我的服务器上时,我已经可以将图像发布到推特(test.jpg),但用户必须能够直接将其上传到推特......

我怎样才能做到这一点 ?

我在“tweet.html”中有这段代码

<form action="photo_tweet.php" method="post">
    <p>tweet: <input type="text" name="tweet" /></p>
    <input type="file" name="image" id="image"/>
    <input type="submit" name="submit" value="Submit" />
</form>

我在'photo_tweet.php'中有这个代码

<?php

/**
 */

require '../tmhOAuth.php';
require '../tmhUtilities.php';
$tmhOAuth = new tmhOAuth(array(
  'consumer_key'    => 'xxxxxxxxxxxxxx',
  'consumer_secret' => 'xxxxxxxxxxxxxx',
  'user_token'      => 'xxxxxxxxxxxxxx',
  'user_secret'     => 'xxxxxxxxxxxxxx',
));

// we're using a hardcoded image path here. You can easily replace this with
// an uploaded image - see images.php in the examples folder for how to do this
// 'image = "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}",

// this is the jpeg file to upload. It should be in the same directory as this file.
    $tweetmessage = $_POST['tweet'];
    $image = 'test.jpg';

$code = $tmhOAuth->request(
  'POST',
  'https://upload.twitter.com/1/statuses/update_with_media.json',
  array(
    'media[]'  => "@{$image};type=image/jpeg;base64;filename={$image}",
    'status'   => $tweetmessage ,
  ),
  true, // use auth
  true  // multipart
);

if ($code == 200) {
  tmhUtilities::pr(json_decode($tmhOAuth->response['response']));
} else {
  tmhUtilities::pr($tmhOAuth->response['response']);
}
4

2 回答 2

1

我在想 Evert,是您执行此操作的最简单方法,如下所示。有一个上传图片页面。此页面临时将图像上传到您的服务器,因为在上传到您的服务器后,它会使用存储在变量中的图像文件名进行重定向。然后它会动态上传到 Twitter 并在 5 分钟后将其从您的站点中删除。

要点:

  • 用户暂时上传到您的网站
  • 重定向到您网站上的 Twitter 上传页面
  • 上传你之前的$image
  • 然后,对其进行计时,使其在 5 分钟内从您的站点中删除。

笔记:

  • 如果您想拥有一个出色的 Twitter 客户端,请保留上传的所有图像。更好的安全性。
  • 另外,我不知道你是否知道,但如果你的 Twitter 客户端发布了指向 .jpg 的直接链接,它的工作方式与 pic.twitter.com 上的图像相同
  • 最后,我认为你已经掌握了窍门,但作为一个初级 PHP 开发人员,我建议你选择一个小一点的项目;)

祝你好运!拉科塔·鲁斯蒂格

于 2013-06-01T10:42:45.570 回答
0

如果您的意思是先绕过上传到服务器的图像,那么如果他们有一个允许通过它发布图像的 javascript api,您将需要使用他们的 javascript api。

否则它会在评论中告诉你如何去做。

// we're using a hardcoded image path here. You can easily replace this with
// an uploaded image - see images.php in the examples folder for how to do this
// 'image = "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}",

$_FILES是一个全局变量,它保存有关用户通过您的推文表单提交的上传图像的信息。

于 2013-05-31T16:54:02.100 回答