使用Twitter Async更新Twitter媒体状态

时间:2011-09-04 17:41:56

标签: php twitter

知道如何用图像更新用户的Twitter状态 - 使用Twitter-Async类吗?

这就是我所拥有的

$twitter = new Twitter(CONSUMER_KEY, CONSUMER_SECRET,$_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
$array = array('media[]' => '@/img/1.jpg','status' => $status);

$twitter->post('/statuses/update_with_media.json', $array);

1 个答案:

答案 0 :(得分:1)

感谢@billythekid,我设法做到了这一点。这是你需要做的: 在EpiOAuth文件中查看这些函数,看看我添加了什么,并在必要时进行更改。

<强> EpiOAuth.php

//I have this on line 24
  protected $mediaUrl       = 'https://upload.twitter.com';

//and altered getApiUrl() to include check for such (you may wish to make this a regex in keeping with the rest?)
  private function getApiUrl($endpoint)
  {
    if(strpos($endpoint,"with_media") > 0)
      return "{$this->mediaUrl}/{$this->apiVersion}{$endpoint}";
    elseif(preg_match('@^/(trends|search)[./]?(?=(json|daily|current|weekly))@', $endpoint))
      return "{$this->searchUrl}{$endpoint}";
    elseif(!empty($this->apiVersion))
      return "{$this->apiVersionedUrl}/{$this->apiVersion}{$endpoint}";
    else
      return "{$this->apiUrl}{$endpoint}";
  }

// add urldecode if post is multiPart (otherwise tweet is encoded)
  protected function httpPost($url, $params = null, $isMultipart)
  {
    $this->addDefaultHeaders($url, $params['oauth']);
    $ch = $this->curlInit($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    // php's curl extension automatically sets the content type
    // based on whether the params are in string or array form
    if ($isMultipart) {
        $params['request']['status'] = urldecode($params['request']['status']);
    }

    if($isMultipart)
      curl_setopt($ch, CURLOPT_POSTFIELDS, $params['request']);
    else
      curl_setopt($ch, CURLOPT_POSTFIELDS, $this->buildHttpQueryRaw($params['request']));
    $resp = $this->executeCurl($ch);
    $this->emptyHeaders();

    return $resp;
  }

发布图片

// how to post image
$twitter = new Twitter(CONSUMER_KEY, CONSUMER_SECRET,$_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
$array = array('@media[]' => '@/img/1.jpg','status' => $status);

$twitter->post('/statuses/update_with_media.json', $array);