un autre twitter oAuth cURL jeton d'accès qui ne demande
La fonction suivante donne une erreur de validation à la place du jeton:
échec de validation de signature et d'authentification oAuth jeton
function request_token()
{
//Set url
$url = $this->site.$this->request_token_path; //http://api.twitter.com/oauth/request_token
//Params to pass to twitter and create signature
$params['oauth_consumer_key'] = $this->consumerKey;
$params['oauth_token'] = '';
$params['oauth_nonce'] = SHA1(time());
$params['oauth_timestamp'] = time();
$params['oauth_signature_method'] = $this->signatureMethod; //HMAC-SHA1;
$params['oauth_version'] = $this->version; //1.0
ksort($params);
//print "<pre>"; print_r($params); print "</pre>";
//Create Signature
$concatenatedParams = '';
foreach($params as $k => $v){
$concatenatedParams .= "{$k}={$v}&";
}
$concatenatedParams = substr($concatenatedParams,0,-1);
$signatureBaseString = "POST&".urlencode($url)."&".urlencode($concatenatedParams);
$params['oauth_signature'] = base64_encode(hash_hmac('SHA1', $signatureBaseString, $this->secret."&", TRUE));
//Do cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLINFO_HEADER_OUT, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
$exec = curl_exec ($ch);
$info = curl_getinfo($ch);
curl_close ($ch);
print $exec;
//print "<pre>"; print_r($info); print "</pre>";
}
- Juste un heads-up. Twitter est d'avoir des problèmes avec oAuth. Cela peut ne pas être votre problème. dev.twitter.com/status
- merci - je ne pense pas que sa que tho...
Vous devez vous connecter pour publier un commentaire.
Ci-dessous est ce que j'ai mis et ça marche 🙂
if (is_array($input)) { return array_map(array('Twitauth', '_urlencode_rfc3986'), $input); }
_http
fonction et l'a remplacé par$response=file_get_contents($url)
et à ma grande surprise, il a travaillé!!vous ne savez pas si votre recherche toujours dans le présent, ou si cela ne fonctionne pas pour vous, mais j'ai eu un semblable de l'installation et a eu le même problème. Finalement, j'ai trouvé que j'ai encodage une à plusieurs fois.
Essayez de commenter cette section:
A fonctionné pour moi, peut-être que cela aidera.
Je vais vous avouer que ce n'est pas vraiment une réponse, mais si vous le pouvez, utilisez le PECL OAuth paquet. Rasmus Lerdorf a écrit un tutoriel sur la façon de l'utiliser et il m'autour de cette même question.
J'ai fait face à la même question, ce que j'étais en manque, c'est en passant la tête dans la demande curl. Comme le montre cette question, j'ai été également l'envoi de l' $header = array('Attendre:'), qui était le problème dans mon cas. J'ai commencé à envoyer la signature à-tête avec d'autres données comme ci-dessous et il a résolu le cas pour moi.