列出Zend GData组中的联系人

时间:2010-06-10 18:14:19

标签: php zend-framework cakephp gdata-api google-contacts

感谢阅读。

我的问题是我正在尝试使用Zend_Gdata_Query获取属于GData中组的联系人列表。

使用

$query = new Zend_Gdata_Query('http://www.google.com/m8/feeds/contacts/default/full/?group=http://www.google.com/m8/feeds/groups/xxx...xxx/base/XXX');
$feed = $gdata->getFeed($query);

给我一​​个“未知的授权标题”。

$query = new Zend_Gdata_Query('http://www.google.com/m8/feeds/contacts/default/full/');
$query->setParam('group', 'http://www.google.com/m8/feeds/groups/XXX...XXX/base/XXX');
$feed = $gdata->getFeed($query);

是一样的。

显然,如果没有该参数,我会收到所有联系人。

我已经尝试了第一个使用URL中的参数的方法,并修改了对CakePHP核心HttpSocket的扩展,它正在运行。所以我想问题是Zend从url中删除了参数,但我没有看到这些库的运气。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

$query->setParam('group', 'http://www.google.com/m8/feeds/groups/myemail%40gmail.com/base/xxxxxxxxxxxxxx');

xxxxxxxxxxxxxx =组ID

答案 1 :(得分:1)

如上所述,如果将max-results添加到查询字符串中,它也会起作用: http://www.google.com/m8/feeds/contacts/default/full?max-results=1000

请注意,即使在Google文档中,获取所有结果的唯一方法是为返回的结果数量设置一个“高数字”。所以你永远不能明确指定'ALL'

答案 2 :(得分:0)

我猜您使用的是三脚架OAuth。然后你需要在调用getFeed()之前添加下一行: $ gdata-> getHttpClient() - > setRequestScheme(Zend_Oauth :: REQUEST_SCHEME_QUERYSTRING); 它将解决“未知授权标头”错误。

对我来说使用 $ query-> setParam('group','http://www.google.com/m8/feeds/groups/XXX...XXX/base/XXX'); 返回另一个错误:“组参数的值无效:XXXXXXXXXX”,我仍然不知道如何解决它:(