Ive가 oAuth에 금이 갔고 클래스 파일이 있습니다. 저는 의 마지막 단계에서을 게시하고 을 제외한 모든 작품은 모든 단어가 더한 기호에 트위터로 결합됩니다.왜 내 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;
}
}
이 이스케이프 문자로 트윗을 인코딩 했으므로 "! * '(); : @ & = + $, /? % # []"문자열의 모든 문자가 % 20과 같이 변환됩니까? – lucius
당신의 의견을 따르십시오. 모든 것은 url_encoded되어야합니다. –