2010-02-12 2 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() 동안 내가 $gdata->getFeed($query)를 사용하지 않는다면 동안 $feed->totalResults에서 오류가 발생, 유효한 XML 것 같다 무엇을 반환했습니다.

$query->MaxResults=100;의 주석을 제거하면 $gdata->getFeed($query)을 사용합니다. Google은 "알 수없는 인증 헤더"가있는 401을 반환합니다.

그럼 Oauth 토큰과 함께 Zend_GData를 사용하는 동안 매개 변수를 지정할 수 있습니까? 또는 내 자신의 요청을 작성한 다음 구문 분석에 Zend_Feed (또는 다른 XML/피드 해독기)를 사용해야합니까?

답변

0

AuthSub과 함께 작동하는 프로세스를 OAuth와 약간 섞은 것 같습니다. 나는 파기를했다. 지금까지 나는 우리 사이의 가장 큰 차이가 나는 $client->setUri('http://www.google.com/m8/feeds/contacts/default/full/');에 피드 URL을 지정하고 다른 내 버전을 설정처럼

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

가 보이는 ... 이런 식으로 내 모든 연락처를 다운로드 할 수 있습니다. 하지만 $bfeed이라는 body() 속성을 가져올 수 있으며 245k의 XML 해부를 제공합니다.

내 문제는이 방법으로 단일 연락처의 피드를 가져올 때 오류가 발생한다는 것입니다.

나는 너와 같이 이것을 파악하려고 노력하고 있으므로 답장을 보내 주시기 바랍니다.

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

그래서 난,뿐만 아니라 여기에 대한 답을 찾는 데에 정말 해요. 둘 중 누구라도 일하면. 게시하십시오 :-) 감사합니다

관련 문제