2012-12-28 95 views
0

與twitter API有點問題。當我向https://api.twitter.com/1/statuses/update.json發送信息時,推文(狀態更新)確實發送,但是,我沒有收到來自twitter的回覆。當我向任何其他api網址發送請求時,它們按預期工作,並返回響應。請參閱下面的代碼...twitter api更新狀態更新,但沒有回覆twitter

function postStatus($oauthToken,$status) { 

    //Create sig base string 
    $tokenddata = array('oauth_token'=>$oauthToken['oauth_token'],'oauth_token_secret'=>$oauthToken['oauth_token_secret']); 
    $status = rawurlencode($status); 
    $baseurl = $this->baseurl . "statuses/update.json"; 
    $url = "{$baseurl}?status={$status}"; 
    $authHeader = get_auth_header($url, $this->_consumer['key'], $this->_consumer['secret'], 
          $tokenddata, 'POST', $this->_consumer['algorithm']); 
    $postfields = "status={$status}"; 
    $response = $this->_connect($url,$authHeader,$postfields,'POST'); 
    return json_decode($response); 
} 

private function _connect($url, $auth, $postfields=null, $method='GET') { 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC) ; 
    curl_setopt($ch, CURLOPT_SSLVERSION,3); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($auth)); 
    if ($method == 'POST') { 
     curl_setopt($ch, CURLOPT_POST, TRUE); 
     if (!empty($postfields)) { 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
     } 
    } 

    $curl_info = curl_getinfo($ch); 
    $response = curl_exec($ch); 
    curl_close($ch); 
    return $response; 
} 

正如我之前說的,我現在用的是其他的請求是「GET」請求,並使用下面的代碼...

function getFromTwitter($url, $oauthToken, $params=null) { 
    $tokenddata = array('oauth_token'=>$oauthToken['oauth_token'],'oauth_token_secret'=>$oauthToken['oauth_token_secret']); 
    $baseurl = $this->baseurl . $url; 
    if(!empty($params)) { 
     $fullurl = $baseurl . "?" . build_http_query($params); 
     $postfields = build_http_query($params); 
     $authHeader = get_auth_header($fullurl, $this->_consumer['key'], $this->_consumer['secret'], 
          $tokenddata, 'GET', $this->_consumer['algorithm']); 
    } else { 
     $authHeader = get_auth_header($baseurl, $this->_consumer['key'], $this->_consumer['secret'], 
          $tokenddata, 'GET', $this->_consumer['algorithm']); 
    } 
    if(!empty($postfields)) { 
     $response = $this->_connect($fullurl,$authHeader); 
    } else { 
     $response = $this->_connect($baseurl,$authHeader); 
    } 
    return json_decode($response); 
} 

感謝所有的幫助! -SM

回答

0

實現對自己的社交網絡可以是一個痛苦的代碼(在我看來)

這將是您更輕鬆地使用Twitter的異步(https://github.com/jmathai/ twitter-async)

我已經將它添加到我的配置項中作爲幫助函數,然後按原樣使用它。

很容易使用&有據可查。

+0

艾哈邁德,我正在使用由亞伯拉罕創建的庫,修改後用於CI MVC體系結構。所有工作都正常工作,直到Twitter更改爲api v1.1。現在唯一沒有工作的是從twitter獲得迴應。 –