如何发布Google日历的动态事件Feed?

Tau*_*ren 9 google-calendar-api gdata-api gdata atom-feed

我正在构建一个webapp,为用户管理某些类型的事件.我想提供一种在用户的谷歌日历中显示这些事件的方法.

我真正希望的是一种方式来发布我自己的谷歌日历兼容的订阅源,并允许用户订阅它,就像他们可以订阅"有趣的日历".因此,如果事件发生变化或添加了新事件,它们将反映在日历中.但看起来Google只允许用户以原始或csv格式导入日历数据,而不是原子Feed格式.

问题是,我的webapp中的现有事件可以更改并添加新事件.我希望这些更改立即反映在谷歌日历中.我不能指望用户继续重新导入ICAL文件.以下SO问题极为相似,但并未真正找到答案: 生成与Google日历兼容的Feed

我是以错误的方式来做这件事的吗?我是否需要使用gdata API创建日历并向其发布事件?似乎发布一个原子提要会简单得多,但如果谷歌不能订阅原子提要,那就行不通了.

如果我只是将我的活动发布为ICAL文件,google日历会定期重新读取网址并更新数据吗?有些用户我每天有4或5个事件,因此随着时间的推移,文件会越来越大.看起来这似乎不是一个好的解决方案.

Mal*_*Box 8

看看这样做的其他网站,谷歌似乎会定期重新阅读外部日历.

然后由你来修剪你提供的饵料,例如通过杀死过去的日期.

所以要解决你的问题:

  • 生成一个ical文件并从您的网站提供服务
  • 让您的用户在Google日历中订阅它
  • 定期刷新锉文件,修剪旧数据

来自TripIt.com的示例标题和ics文件的开头,这似乎运作良好:

curl -v http://..../tripit.ics

< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 29 Jan 2010 21:53:58 GMT
< Content-Type: text/calendar; charset=utf-8
< Transfer-Encoding: chunked
< Connection: close
< Expires: Fri, 29 Jan 2010 22:08:58 GMT
< Cache-Control: private
< 
BEGIN:VCALENDAR
X-WR-CALNAME:Malcolm Box (TripIt)
X-WR-CALDESC:TripIt Calendar
X-PUBLISHED-TTL:PT15M
PRODID:-//John Papaioannou/NONSGML Bennu 0.1//EN
VERSION:2.0
BEGIN:VEVENT
...
Run Code Online (Sandbox Code Playgroud)