2011-12-29 8 views
6

Używam meltingice's API for TwitPic i kiedy próbuję załadować zdjęcie dostaję błąd 401 z komunikatem "Nie mogę się uwierzytelnić (nagłówek odrzucony przez twitter)".401 - "Nie można Cię uwierzytelnić (nagłówek odrzucony przez twitter)." kiedy próbuję wgrać obrazek z PHP do TwitPic

Nagłówki (pobrane z obiektu HTTP pytanie2) są:

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 
) 

Zrobiłem pewien, że podpis verify_credentials używa GET, i nie widzę żadnych innych problemów.

Co robię źle?

Dzięki :)

EDIT: Oto mój kod źródłowy.

$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')); 

I jestem pewien, że token, sekret, i poświadczenia aplikacji są poprawne, ponieważ działa w moim API Twittera bez żadnych problemów. Dwa razy sprawdziłem również klucz Twitpic API.

+0

Spróbuj otaczający kod z try i catch, aby zobaczyć czy zgłasza wyjątek. Powinieneś także włączyć błędy, aby sprawdzić, czy nie ma żadnych błędów, których nie widzisz. A także: Dlaczego logujesz się do Twittera? Czy to naprawdę konieczne, gdy używasz TwitPic? –

+0

Spróbuj uzyskać faktyczne żądanie HTTP wysyłane do TwitPic. Można to zrobić na wiele sposobów: netcat, fiddler, wireshark ... –

+0

@ RunarJørgensen Zgłasza wyjątek niestandardowy, a ja wszedłem do miejsca, w którym został zgłoszony wyjątek, aby odebrać tablicę nagłówków. –

Odpowiedz

2

Po sprawdzeniu TwitPic documentation Zauważyłem, że błąd 401 zostało wyjaśnione: This method will return a 401 Unauthorized if the OAuth header was not present or could not be verified with Twitter.

Mówisz, upewnił się, że podpis verify_credentials używa GET a tylko API akceptuje POST. Może to twój problem?

Oto przykładowy kod związany z API używasz:

+0

'verify_credentials' akceptuje GET [patrz tutaj] (https://dev.twitter.com/docs/api/1/get/account/verify_credentials), a interfejs API, którego używam, używa polecenia GET. –

+0

Spróbuj podać swój kod. Łatwiej będzie ludziom sprawdzić, czy wszystko jest w porządku. –

Powiązane problemy