El componente Zend_Service_Twitter sigue siendo para Twitters API v1.0, que estará en desuso el 5 de marzo de 2013. Así que quería hacer mi nuevo sitio web con la interacción de Twitter API v1.1 listo. Todo funciona bien con v1.0, pero si cambio la URL /1/
-/1.1/
falla con el código de cabecera HTTP 400 y el mensaje de error JSON: Bad Authentication data
(Código: 215)Zend_Service_Twitter - Make API v1.1 ready
para obtener el token de solicitud y el acceso se quedaron la misma y trabaja ya sin ningún cambio, pero si quiero para verificar las credenciales como este me sale el error que he descrito anteriormente:
// Take a look for the code here: http://framework.zend.com/manual/1.12/en/zend.oauth.introduction.html
$accessToken = $twitterAuth->getAccessToken($_GET, unserialize($_SESSION['TWITTER_REQUEST_TOKEN']));
// I have a valid access token and now the problematic part
$twitter = new Zend_Service_Twitter(array(
'username' => $accessToken->getParam('screen_name'),
'accessToken' => $accessToken
));
print_r($twitter->account->verifyCredentials());
he cambiado el código de VerifyCredentials en Zend/Service/Twitter.php
de aquel al que:
public function accountVerifyCredentials()
{
$this->_init();
$response = $this->_get('/1/account/verify_credentials.xml');
return new Zend_Rest_Client_Result($response->getBody());
}
// to
public function accountVerifyCredentials()
{
$this->_init();
$response = $this->_get('/1.1/account/verify_credentials.json');
return Zend_Json::decode($response->getBody());
}
Ahora añade antes de la return Zend_Json[...]
esta línea:
print_r($this->_localHttpClient->getLastRequest());
// And I get this output of it:
GET /1.1/account/verify_credentials.json HTTP/1.1
Host: api.twitter.com
Connection: close
Accept-encoding: gzip, deflate
User-Agent: Zend_Http_Client
Accept-Charset: ISO-8859-1,utf-8
Authorization: OAuth realm="",oauth_consumer_key="",oauth_nonce="91b6160db351060cdf4c774c78e2d0f2",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1349107209",oauth_version="1.0",oauth_token="hereismytoken",oauth_signature="hereisavalidsignature"
Como se podía ver el oauth_consumer_key
(y realm
también) está vacía. ¿Podría ser ese el error? ¿Cómo podría resolver este error (debido a la nueva versión de la API más estricta?)? ¿Estaría bien establecer de alguna manera el oauth_consumer_key
? Si es así, ¿cómo podría manejar eso?
Editar: también he encontrado ya un informe de error en el seguimiento de incidencias del Zend Framework: http://framework.zend.com/issues/browse/ZF-12409 (? Tal vez hacer un upvote)
Eso no es un nombre de clase muy descriptivo. ¿Y no debería estar en un espacio de nombre diferente si Zend no lo escribió? Me doy cuenta de que solo se trata de ajustes, pero es una buena práctica usar un espacio de nombres diferente si anulas una clase. – voidstate
Es solo un ejemplo. – yAnTar