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

$feed25個の接点がついた可愛らしいオブジェです。しかし、1回のプルでより多くを取得したい場合、機能する最大結果を指定する方法はないようです.

コメントを外すclient->setParameterGetと無視されます。応答を取得するために指定$client->setUriして使用すると機能$rawdata = client->request()しますが、返されたフィード データを処理する際に他の問題が発生します...簡単に処理するために GData に取得するなどです。

私は試しましたが、有効なXMLと思われるもの$feed = $gdata->importString($rawdata->getBody())を返し、エラーをスローしますが、.$rawdata->getBody()$feed->totalResults$gdata->getFeed($query)

コメントを外すと$query->MaxResults=100;$gdata->getFeed($query)Google は「不明な認証ヘッダー」を含む 401 を返します。

では、Oauth トークンで Zend_GData を使用しているときにパラメーターを指定することは可能でしょうか? それとも、独自のリクエストを作成してから、解析に Zend_Feed (またはその他の XML/フィード ディセクタ) を使用する必要がありますか?

4

2 に答える 2

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 に答える
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();

私たちの主な違いは、でフィードURLを指定し$client->setUri('http://www.google.com/m8/feeds/contacts/default/full/');、バージョンを別の方法で設定しているようです。しかし、のbody()プロパティを取得することはできます$bfeed。これにより、245kのXMLを分析できます。

私の問題は、この方法で1つの連絡先のフィードをプルダウンすると、エラーが発生することです。

私もあなたと同じようにこれを理解しようとしているので、あなたに合ったものを何でも返信してください。

于 2010-03-16T07:07:12.663 に答える