我正在尝试在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,这给了我不同的错误信息,但我无法让它工作。我一直在谷歌搜索解决方案几个小时没有运气。有人可以帮忙吗?
感谢。 - 戴夫
答案 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);
现在我希望这会有所帮助。我告诉你我花了太长时间才弄明白这一点,但我不是世界上最聪明的人。