update_with_media用亚伯拉罕的twitteroauth的(update_with_m

2019-07-29 08:02发布

我试图实现从阿贾克斯用亚伯拉罕的twitteroauth的库(TwitterOAuth对象v0.2.0-β2)的upload_with_media请求。 我已经受够了基本的职位没有问题,但是当我尝试包括媒体我得到这个作为响应:

"{"request":"\/1\/statuses\/update_with_media.json","error":"Error creating status."}"

我张贴媒体的代码如下所示:

   $image = $_FILES["media"]["tmp_name"];

    $parameters = array(
        'media[]'  => "@{$image};type=image/jpeg;filename={$image}",
        'status'   => $status
      );

    if(isset($reply_id)) {
        $parameters['in_reply_to_status_id'] = $reply_id;
    }
    $post = $twitteroauth->post('https://upload.twitter.com/1/statuses/update_with_media.json', $parameters);
    echo json_encode($post);

我已经验证了所有的数据被正确发送到这个脚本,甚至设法得到一个update_with_media后使用相同的数据之上和tmhOAuth库,但因为我的小工具的其余部分使用twitteroauth的工作,我宁愿让事情变得均匀。 我也有和没有贴结局以.json试了一下,看到没有什么区别。 谁能告诉我一个成功的实施使用twitteroauth的update_with_media的例子吗? 我似乎无法找出我做错了什么。

Answer 1:

在小时处理的解决方案,以UPDATE_WITH_MEDIA与twitteraouth库后,我发现下面的解决方案,工作正常:

  • 第一:从Twitter开发链接的PHP原始库在这里不起作用。

是不是跟UPDATE_WITH_MEDIA WORKING

  • 寻寻觅觅之后,我发现了同样的库,但与修复做。 你可以在这里找到它: https://github.com/tomi-heiskanen/twitteroauth/tree/77795ff40e4ec914bab4604e7063fa70a27077d4/twitteroauth

基本性差异的是,原本具有的功能“后”没有“$多”参数。 这个参数是什么让送什么Twiiter的文件中要求:一个多ENCTYPE岗位。 所以在最后的基本代码如下:

$image_path="folder/image.jpg";

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

$params = array(
  'media[]' => "{$image};type=image/jpeg;filename={$image_path}",
  'status'  => "Put your message here, must be less than 117 characters!"
);
$post = $connection->post('statuses/update_with_media', $params, true);

重要! 如果你试试这个代码与原库,你会发现一个错误。 你必须从上面的链接下载和替换这两个文件(OAuth.php和twitteroauth.php)在您的项目。



Answer 2:

尝试使用codebird的PHP https://github.com/mynetx/codebird-php

它会证明它的伎俩,尽管由Twitter提出的PHP库列表中是最后一个。 只要抓住从混帐回购协议codebird.php和cacert.pem。

    include_once('codebird.php');
    \Codebird\Codebird::setConsumerKey($consumer_key, $consumer_secret);
    $cb = \Codebird\Codebird::getInstance();
    $cb->setToken($token, $token_secret);
    $status = 'Gamo, I just tweeted with an image!';
    $filename = '/home/asdf/test.png';
    $cb->statuses_updateWithMedia(array('status' => $status, 'media[]' => $filename));


Answer 3:

原来的库不包括媒体上传功能 。 可以签出https://github.com/natefanaro/twitteroauth 。



Answer 4:

我建议你使用Fiddler2或一些类似的工具来检查和比较,走出去与twitteroauth的消息,同时还与tmhOAuth。 你会看到其中的差别。

根据我的经验,这是一个HTTP POST到Twitter的样子,用update_with_media。{XML,JSON}。 您所使用的后缀只影响respponse,我相信。 (您的应用程序必须设置的方式,具体到你的应用程序的Authorization头。)

你想获得twitteroauth的张贴类似下面的

POST https://upload.twitter.com/1/statuses/update_with_media.xml HTTP/1.1
Authorization: OAuth oauth_callback="oob", oauth_consumer_key="xxxxxxxxxxxx", oauth_nonce="7774328k", oauth_signature="pUYjRnccmrBYiO1j9cliETsw%2B5s%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1318300521", oauth_token="59152613-vrlZ2edX56PudQtBmpAWd3SPDt9cPyAhibO7ysl6W", oauth_version="1.0"
Content-Type: multipart/form-data; boundary=======c49479438c600bf59345e======
Host: upload.twitter.com
Content-Length: 7320
Connection: Keep-Alive

--======c49479438c600bf59345e======
Content-Disposition: form-data; name="status"

working on a Tweet tool that uses the OAuth Manager library.
--======c49479438c600bf59345e======
Content-Disposition: file; name="media[]"; filename="ThisIsAPicture.png"
Content-Type: image/png

  ...binary png data here...

--======c49479438c600bf59345e======--


Answer 5:

我想与状态PARAM发送URL链接

这样的:在这里把你的消息



文章来源: update_with_media using abraham's twitteroauth