0

単純なカレンダー フェッチを実行すると、次のエラーが発生します。

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

コードは次のようになります。

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

カレンダー クエリ

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

Zend_Http_Client_Adapter_Socket リソース ヘッダーの下に $calenderClient をダンプする場合:

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

ただし、getMajorProtocolVersion() は 1 を返します。

4

1 に答える 1

0

解決策は、GData バージョンを変更する必要があるときはいつでも、HTTP クライアントで setHeaders() を実行することです。これには具体的な方法があると確信していますが、これは機能します。

// $http_client is Zend_Oauth_Token_Access()::getHttpClient()
$http_client->setHeaders('GData-Version', '2.0');
于 2012-05-23T06:46:59.463 に答える