2010-08-09 5 views
0

En fait ce n'est pas une question de php, c'est plus sur OAuth. J'essaie de comprendre comment générer la clé de signe OAuth. J'ai lu les documents Twitter et essayé l'exemple, mais je ne pouvais pas comprendre comment utiliser le SHA1.Comment générer la signature OAuth avec PHP pour API Twitter?

Devrais-je utiliser SHA1 sur la chaîne de base avec ou sans la clé secrète? J'ai essayé plusieurs variantes, mais la clé de signature était différente de celle de l'exemple.

Ceci 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; 

}

Merci

+1

Eh bien, pour commencer, remplacer tous ceux "+ =" avec ". =". Le "." L'opérateur est utilisé pour la concaténation en PHP. – pop850

+1

Non, pas ". =.", Uniquement: ". =" – pop850

Répondre