Почему в моих твитах oAuth есть плюсы (+)? - PullRequest
0 голосов
/ 27 июля 2010

Я взломал oAuth и у меня есть файл класса для него. Я на последней стадии отправляю твит , и все работы, кроме , все слова объединяются со знаком плюс в твите.

Если что-то изменить, подпись окажется неверной, а твиттер вернет ошибку 401.

Так как убрать плюсы? Функция сообщения ниже:

function post($token, $tokenSecret, $status)
{
    // Default params
    $params = array(
        "oauth_version" => "1.0",
        "oauth_nonce" => time(),
        "oauth_timestamp" => time(),
        "oauth_consumer_key" => $this->key,
        "oauth_signature_method" => "HMAC-SHA1",
        "oauth_token" => $token,
        "status" => $status
     );
    uksort($params, 'strcmp');

    // convert params to string 
        foreach ($params as $k => $v) {$pairs[] = $this->_urlencode_rfc3986($k).'='.$this->_urlencode_rfc3986($v);}
        $concatenatedParams = implode('&', $pairs);

        // form base string (first key)
        $baseString= "POST&".$this->_urlencode_rfc3986($this->request_statuses_url)."&".$this->_urlencode_rfc3986($concatenatedParams);
        // form secret (second key)
        $secret = $this->_urlencode_rfc3986($this->secret)."&".$this->_urlencode_rfc3986($tokenSecret);
        // make signature
        $sig = $this->_urlencode_rfc3986(base64_encode(hash_hmac('sha1', $baseString, $secret, TRUE)));

     // BUILD URL
        $url = $this->request_statuses_url; // twitter update url
        $paramString = $concatenatedParams."&oauth_signature=".$sig;

     // Send to cURL
     $result = $this->_http($url, $paramString);

     if($result['httpCode'] == '200'){

        // Return array
        return $result;
    }
    else{

        // Error
        show_error($result['httpCode'], $result['httpCode']);
        return FALSE;
    }       
}

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Является ли $ status вашим твитом?Посмотрите на запрос POST, прежде чем публиковать его, я предполагаю, что _urlencode_rfc3986 () преобразует его так, чтобы вы получили "$ status = This + is + my + tweet", когда вы хотите "$ status = Это мой твит"

0 голосов
/ 04 августа 2010

Твиттер не поддерживает "+" как escape для пробелов, что, насколько я знаю, является нарушением стандарта.

Вы должны заменить + на% 20.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...