Задание параметров в Zend_GData при использовании токена Oauth? - PullRequest
0 голосов
/ 12 февраля 2010

Итак, я разобрался, как получить токен доступа от Google с помощью библиотеки Zend_Oauth в 1.10. Теперь допустим, я хочу получить мои контакты ...

  $config = array(
      'consumerKey' => 'zzz',
      'signatureMethod' => 'HMAC-SHA1',
'consumerSecret' => 'xxx'
  );

  $token = unserialize($_SESSION['GOOGLE_ACCESS_TOKEN']);


$client = $token->getHttpClient($config);
$client->setMethod(Zend_Http_Client::GET);
// $client->setParameterGet('max-results', '10000');

$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);

$query = new Zend_Gdata_Query('http://www.google.com/m8/feeds/contacts/default/full');

// $query->MaxResults=100;

$feed = $gdata->getFeed($query);

$feed - прекрасный объект с 25 контактами. Но если я хочу получить больше за один раз, кажется, нет способа указать максимальные результаты, которые работают.

Если я раскомментирую client->setParameterGet, это игнорируется. Это работает, если я укажу $client->setUri и использую $rawdata = client->request() для получения ответа, но затем возникают другие проблемы с обработкой данных фида, которые возвращаются ... как получение их в GData для легкой обработки.

Я пробовал $feed = $gdata->importString($rawdata->getBody()), но $rawdata->getBody() возвращает то, что кажется правильным XML, $feed->totalResults выдает ошибку, а если бы я использовал $gdata->getFeed($query),

, то не было бы.

Если я раскомментирую $query->MaxResults=100;, используйте $gdata->getFeed($query) Google возвращает 401 с "Неизвестным заголовком авторизации".

Так возможно ли указать параметры при использовании Zend_GData с токеном Oauth? Или мне придется создавать свои собственные запросы, а затем использовать Zend_Feed (или какой-либо другой XML / Feed disctor) для анализа?

Ответы [ 2 ]

0 голосов
/ 25 августа 2010

Я не могу получить весь список контактов только 25 ... параметры, похоже, не работают с использованием Gdata, и запрос выглядит так:

$http  = $token->getHttpClient($oauthOptions);
$gdata = new Zend_Gdata($http, 'MY APP');
$gdata->setMajorProtocolVersion(3);
$gdata->getHttpClient()->setRequestScheme(Zend_Oauth::REQUEST_SCHEME_QUERYSTRING);


$query = new Zend_Gdata_Query('http://www.google.com/m8/feeds/contacts/default/full?max-results=10');
$query->setMaxResults(10);
$query->maxResults = 10;
$feed = $gdata->getFeed($query);

так что я действительно хочу найти ответы и здесь. Если кто-то из вас работает. пожалуйста, напишите :-) спасибо

0 голосов
/ 16 марта 2010

Немного сложно смешать процесс, предназначенный для работы с AuthSub с OAuth. Я немного покопался. Пока я могу загрузить все мои контакты вот так ...

$client = $token->getHttpClient($config);
$client->setMethod(Zend_Http_Client::GET);
$client->setUri('http://www.google.com/m8/feeds/contacts/default/full/');
$client->setParameterGet('max-results', '10000');
$client->setParameterGet('v','3');
$bfeed = $client->request();

Похоже, что основное различие между нами заключается в том, что я задаю URL фида в $client->setUri('http://www.google.com/m8/feeds/contacts/default/full/'); и устанавливаю свою версию по-другому. Но я могу получить body() свойство $bfeed, и это дает мне 245 тыс. XML для анализа.

Моя проблема в том, что когда я вытаскивал канал одного контакта с помощью этого метода, я получал ошибку.

Я, как и вы, пытаюсь это выяснить, поэтому, пожалуйста, ответьте всем, что вам подходит.

...