2010-02-12 23 views
0

因此,我想出瞭如何使用1.10中的Zend_Oauth庫從Google獲取訪問令牌。現在可以說,我想我的聯繫人...使用Oauth標記時在Zend_GData中指定參數?

$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。

那麼在使用帶有Oauth標記的Zend_GData時可能指定參數?或者我將不得不構建自己的請求,然後使用Zend_Feed(或其他XML/Feed解析器)進行解析?

回答

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

就像我們之間的主要區別是我在$client->setUri('http://www.google.com/m8/feeds/contacts/default/full/');指定供稿網址和不同的設置我的版本。但我可以得到$bfeedbody()財產,它給了我245k的XML解剖。

我的問題是,當我通過此方法拉下單個聯繫人的Feed時,出現錯誤。

我和你一樣想弄明白這一點,所以請回復任何適合你的東西。

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

,所以我; M真正進入這裏找到答案爲好。如果你們中的任何一個人都能工作。請發帖:-) 謝謝