Comment générer OAuth signature avec php pour l'API Twitter?

En fait ce n'est pas un php en question, il est plus sur OAuth.
J'essaie de comprendre comment générer de l'OAuth signe de la clé.
J'ai lu le Twitter Docs et essayé l'exemple, mais je ne pouvais pas comprendre comment utiliser le SHA1.

Dois-je utiliser SHA1 sur la chaîne de base avec ou sans le secret_key?
J'ai essayé de nombreuses variantes, mais le signe essentiel était de forme différente de celle de l'exemple.

C'est mon code:

function request_token(){

    $headers = 'POST&';
    $headers .= urlencode('https://api.twitter.com/oauth/request_token');
    $headers .= '%26oauth_callback%3d'.urlencode($this->oauth_callback);
    $headers .= '%26oauth_consumer_key%3d'.urlencode($this->oauth_consumer_key);
    $headers .= '%26oauth_nonce%3d'.urlencode($this->oauth_nonce);
    $headers .= '%26oauth_signature_method%3d'.urlencode($this->oauth_signature_method);
    $headers .= '%26oauth_timestamp%3d'.urlencode($this->oauth_timestamp);

    $request_token_url = 'http://api.twitter.com/oauth/request_token?';
    $sha = sha1($headers);
    $url = $request_token_url.$sha.$this->consumer_secret.'&';

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch, CURLOPT_POST      ,1);
    curl_setopt($ch,CURLOPT_PUT,true); 
    curl_setopt($ch, CURLOPT_HEADER, 1);

    $result = curl_exec($ch);
    curl_close($ch);
    return $result;

}

Grâce

  • Eh bien, pour commencer, remplacer tous les "+=" avec ".=". L'opérateur "." est utilisé pour la concaténation en PHP.
  • Non, pas " .=. ", que: ".= "