0

因此,我想出了如何使用 1.10 中的 Zend_Oauth 库从 Google 获取访问令牌。现在假设我想获取我的联系人...

  $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 解析器)进行解析?

4

2 回答 2

0

将用于使用 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();

看起来我们之间的主要区别是我在 中指定了 Feed URL,$client->setUri('http://www.google.com/m8/feeds/contacts/default/full/');并以不同的方式设置了我的版本。但我可以得到它的body()属性,$bfeed它给了我 245k 的 XML 来剖析。

我的问题是,当我通过这种方法拉下单个联系人的提要时,我遇到了错误。

我和你一样,正在努力解决这个问题,所以请回复任何对你有用的东西。

于 2010-03-16T07:07:12.663 回答
0

我完全无法仅获得 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);

所以我真的很喜欢在这里找到答案。如果你们中的任何一个有任何工作。请张贴:-) 谢谢

于 2010-08-25T07:10:30.960 回答