2011-12-29 2 views
6

Estoy usando meltingice's API for TwitPic y cuando intento cargar una imagen aparece un error 401 con el mensaje "No se pudo autenticar (encabezado rechazado por twitter)".401 - "No se pudo autenticar (encabezado rechazado por Twitter)". cuando intento subir una imagen con PHP a TwitPic

Los encabezados (recuperados del objeto HTTP solicitud2) son:

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 
) 

que se aseguró de que la firma verify_credentials está utilizando GET, y no puedo ver cualquier otra cuestión.

¿Qué estoy haciendo mal?

Gracias :)

EDIT: Aquí está mi código fuente.

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

y estoy seguro de que el token, secreto, y las credenciales de aplicaciones son correctas a medida que trabajan en mi API de Twitter sin ningún problema. También he comprobado dos veces la clave de API de Twitpic.

+0

Probar que rodea su código con tratar de atrapar para ver si se produce una excepción. También debe habilitar los errores para ver si hay algún error que no vea. Y también: ¿Por qué estás iniciando sesión en Twitter también? ¿Es eso realmente necesario cuando usas TwitPic? –

+0

Intente obtener la solicitud HTTP real que se envía a TwitPic. Hay varias maneras de hacerlo: netcat, fiddler, wireshark ... –

+0

@ RunarJørgensen Lanza una excepción personalizada, y entré donde se lanzó la excepción para recibir la matriz de encabezado. –

Respuesta

2

Después de comprobar la TwitPic documentation me di cuenta de que el error 401 se explicó: This method will return a 401 Unauthorized if the OAuth header was not present or could not be verified with Twitter.

¿Estás diciendo que se aseguró de que la firma verify_credentials está utilizando GET mientras que la API sólo acepta POST. Tal vez ese es tu problema?

Aquí está el código de ejemplo relacionado con la API que está utilizando:

+0

'verify_credentials' solo acepta GET [ver aquí] (https://dev.twitter.com/docs/api/1/get/account/verify_credentials), y la API que estoy usando usa GET. –

+0

Intenta incluir tu código. Será más fácil para las personas comprobar si todo está bien allí. –

Cuestiones relacionadas