2011-12-29 9 views
6

Sto usando meltingice's API for TwitPic e quando provo a caricare un'immagine ricevo un errore 401 con il messaggio "Non posso autenticarti (header respinto da twitter)".401 - "Non posso autenticarti (header respinto da twitter)." quando provo a caricare un'immagine con PHP su TwitPic

Le intestazioni (recuperato dall'oggetto HTTP request2) sono:

Array 
(
    [user-agent] => HTTP_Request2/2.0.0 (http://pear.php.net/package/http_request2) PHP/5.2.17 
    [x-verify-credentials-authorization] => OAuth realm="http://api.twitter.com/", oauth_consumer_key="****************", oauth_signature_method="HMAC-SHA1", oauth_token="#########-******************", oauth_timestamp="1325192643", oauth_nonce="***********", oauth_version="1.0", oauth_signature="****************%3D" 
    [x-auth-service-provider] => https://api.twitter.com/1/account/verify_credentials.json 
    [content-type] => multipart/form-data 
) 

ho fatto in modo che la firma verify_credentials sta usando GET, e non riesco a vedere tutte le altre questioni.

Cosa sto sbagliando?

Grazie :)

EDIT: Ecco il mio codice sorgente.

$venue = $this->Venue->findById($venueId); 
$twitterData = json_decode($venue['Venue']['twitter_data']); 
$token = $twitterData->token; 
$secret = $twitterData->secret; 
$this->Twitter->loginTwitterUser($token, $secret); 
require_once(WWW_ROOT.'twitpic/TwitPic.php'); 

$twitpic = new TwitPic('**********', '*******', '*********', $token, $secret); 


$result['result'] = $twitpic->upload(array('media'=> '/home/todays/public_html/tsm/app/webroot/files/uploads/LOGOA7V1_10.png', 'message'=> 'test')); 

e sono sicuro che il token, segreto, e le credenziali di app sono corrette che lavorano nel mio Twitter API senza problemi. Ho anche ricontrollato la chiave API di Twitpic.

+0

Prova che circonda il codice con try e catch per vedere se genera un'eccezione. Inoltre dovresti abilitare gli errori per vedere se ci sono errori che non vedi. E anche: perché stai registrando su twitter? È davvero necessario quando usi TwitPic? –

+0

Provare a ricevere la richiesta HTTP effettiva inviata a TwitPic. Ci sono diversi modi per farlo: netcat, fiddler, wireshark ... –

+0

@ RunarJørgensen Getta un'eccezione personalizzata, e sono andato in cui l'eccezione è stata lanciata per ricevere l'array di intestazione. –

risposta

2

Dopo aver controllato il TwitPic documentation ho notato che l'errore 401 è stato spiegato: This method will return a 401 Unauthorized if the OAuth header was not present or could not be verified with Twitter.

Stai dicendo che hai fatto in modo che la firma verify_credentials sta usando GET, mentre l'API accetta solo POST. Forse è questo il tuo problema?

Ecco il codice di esempio relativo al API che si sta utilizzando:

+0

'verify_credentials' accetta solo GET [vedi qui] (https://dev.twitter.com/docs/api/1/get/account/verify_credentials) e l'API che sto utilizzando utilizza GET. –

+0

Prova a includere il tuo codice. Sarà più facile per le persone controllare se tutto è ok lì. –

Problemi correlati