La API de calendario de Zend Gdata devuelve "La versión 3.0 no es compatible".

Recibir el siguiente error al realizar una búsqueda de calendario simple:

Expected response code 200, got 403
Version 3.0 is not supported.

El código se ve así:

Oauth

$options = array(
    'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
    'version' => '1.0',
    'signatureMethod' => 'HMAC-SHA1',
    'consumerKey' => $config['consumer_key'],
    'consumerSecret' => $config['consumer_secret']
);

/**
 * Create HTTP Client object which adds OAuth Authorization
 * headers to outbound requests.
 */
$this->_consumer = new Zend_Oauth_Consumer($options);
$this->_token = new Zend_Oauth_Token_Access();
$this->_http_client = $this->_token->getHttpClient($options);

Consulta de calendario

$calendarClient = new Zend_Gdata_Calendar(Oauth::I()->getHttpClient());
print $calendarClient->getMajorProtocolVersion();

$query = $calendarClient->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('full');

Oauth::I()->setRequestorId($query);
try {
  $list = $calendarClient->getCalendarEventEntry($query);
  var_dump($list);
} catch(Exception $e) {
  var_dump($e->getMessage());
}
var_dump($calendarEventsFeed);

Al volcar $calenderClient bajo los encabezados de recursos Zend_Http_Client_Adapter_Socket:

  ["gdata-version"]=>
  array(2) {
    [0]=>
    string(13) "GData-Version"
    [1]=>
    string(3) "3.0"
  }

sin embargo, getMajorProtocolVersion() devuelve 1.

preguntado el 22 de mayo de 12 a las 15:05

1 Respuestas

La solución es establecer encabezados () en el cliente HTTP cada vez que necesite cambiar la versión de GData. Estoy seguro de que hay un método específico para esto, pero esto funciona.

// $http_client is Zend_Oauth_Token_Access()::getHttpClient()
$http_client->setHeaders('GData-Version', '2.0');

contestado el 23 de mayo de 12 a las 07:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.