如何使用Zend / PHP插入非默认Google日历

时间:2009-02-17 03:46:29

标签: php zend-framework zend-gdata

我正在尝试在Google日历中插入一个新事件,我可以通过以下方式做到这一点:

$sname = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name for calendar
$client = Zend_Gdata_ClientLogin::getHttpClient($userName,$password,$sname);
$service = new Zend_Gdata_Calendar($client);

$event = $service->newEventEntry();
$event->title = $service->newTitle($name);
$event->when = array($when);
$newEvent = $service->insertEvent($event);

但是,这只会插入默认日历中。我试图使用insertEvent的URI参数来获取我需要去的地方:

$uri = "http://www.google.com/calendar/feeds/default/something@somethingelse.com/private/full";
$newEvent = $service->insertEvent($event, $uri);

这没效果。我已经尝试过编码和解码URI,这给了我不同的错误信息,但我无法让它工作。我一直在谷歌搜索解决方案几个小时没有运气。有人可以帮忙吗?

感谢。 - 戴夫

2 个答案:

答案 0 :(得分:4)

发现问题: 上面的URI不起作用: “http://www.google.com/calendar/feeds/ 默认 /something@somethingelse.com/private/full”;

不应该有默认部分。

此外,@符号应替换为编码。所以它应该是: “http://www.google.com/calendar/feeds/something%40somethingelse.com/private/full”;

答案 1 :(得分:3)

我已经打了一段时间了,我终于开始工作了。这不是很好,但这是我正在寻找的答案

首先,您必须获取日历ID。如果您进入日历并单击名称旁边的向下箭头图标,您将看到日历设置选项。选择该菜单项。在底部附近,您将看到日历地址。需要一点时间才能找到日历ID,它看起来像这样

(日历ID:o4g3921hdiaq5p8kdat2l4vgis@group.calendar.google.com)

你想要o4g39j1hdihq4p8kdat2l4vgis@group.calendar.google.com

在路上,我想在php中得到这个,但是现在我可以硬编码。所以我设置了一个变量

$calendar_user = 'o4g39j1hdihq4p8kdat2l4vgis@group.calendar.google.com';

$calendar_user = 'o4g39j1hdihq4p8kdat2l4vgis@group.calendar.google.com';

检索事件时,您将像这样设置用户

但是当您添加事件时,您不能这样做,您必须在插入事件的位置使用$ calendar_user。

所以这是完整的代码

$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser($calendar_user);

现在我希望这会有所帮助。我告诉你我花了太长时间才弄明白这一点,但我不是世界上最聪明的人。