0

Twitter API に少し問題があります。https://api.twitter.com/1/statuses/update.jsonに何かを送信すると、ツイート (ステータス更新) は送信されますが、Twitter から応答がありません。他の API URL のいずれかにリクエストを送信すると、それらは期待どおりに機能し、レスポンスを返します。以下のコードを参照してください...

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

4

1 に答える 1

0

ソーシャル ネットワークのコードを自分で実装するのは面倒な場合があります (私の意見では)。

twitter-async (https://github.com/jmathai/twitter-async) を使用する方が簡単です。

以前にCIにヘルパー関数として追加してから、そのまま使用しました。

使いやすく、よく文書化されていました。

于 2012-12-29T15:49:04.183 に答える