我在PHP中有一个应用程序,每个用户都有自己的相关事件。
我想要做的是以一种类似于facebook上事件的方式公开他的事件,它给出了webcal://www.facebook.com/ical/b.php?uid=123456789&key=ASD123ASD123ASD格式的urls,每当出现新事件时,它就会自动传播到我的日历上,而我已经将它添加到了我的google日历中。
我想要做的是在http://whatever.org/someLongUniquePerUserIdentifier.ics这样的url上公开这个日历。
我尝试用一个位于同一个url上的简单文件来模拟事件生成脚本。这是google使用的ics文件,事件已经添加,但是当我更改文件内容(删除一个事件)=更改资源(应该订阅google日历)时,这个更改根本没有传递到gcal。
由于找不到任何可靠的文档来源,我尝试用不同的关键字搜索很多,而且我只被引导到webdav服务器,如DAVical、sabredav等。
我在我的服务器上安装了DAVical,只到了一种状态,我已经正确安装了服务器,但是不知道如何在我想要的url上公开MySQL数据库中的事件,这将是客户机订阅的。
与sabredav一样,除了事实之外,我还没有尝试让它工作,因为我看不到使用任何dav服务器将我的事件发送给世界的任何记录方式。
我基本上被困在一个用PHP导出ics的地方,它不会被日历客户端要求更新,而运行中的CalDAV服务器可能会被客户要求更新,但是没有数据可返回。
有什么想法吗?
编辑的问题:
实现即时单向日历同步的正确方法是什么?
发布于 2014-04-28 04:16:58
如果我没有弄错,似乎您只需将链接从http://whatever.org/someLongUniquePerUserIdentifier.ics更改为webcal://whatever.org/someLongUniquePerUserIdentifier.ics。
webcal协议应该触发日历软件中的“订阅”操作。如果您看到它下载了一个文件,那么它不会订阅。
发布于 2014-04-24 13:42:00
.ics格式在RFCs、五五四五和六八六八中定义。您可以自己实现输出。但是,由于它包含一些棘手的部分,比如UTC datetimes,所以在使用库时可能会更加健壮。
订阅您的事件只不过是将您的url添加到一个日历应用程序中,该应用程序将轮询它的更改。删除事件可能不会将其从日历中删除,应将其状态更改为已取消。
对于这种格式,我没有任何PHP库的经验,但是谷歌搜索会给您带来很多好处。它看起来像Drupal项目正在讨论,并且正在尝试iCalcreator。
如果你不相信我
展望
将Internet日历订阅添加到Outlook中Internet日历订阅是在Outlook中下载和查看的日历。但是,与日历快照不同,Internet日历订阅是自动更新的。 这些日历可以在人们托管日历的网站上找到。在这样的网站上,您可以单击链接下载并订阅日历,也可以通过电子邮件邮件向您发送到Internet日历订阅的链接。此链接是以webcal://开头的Internet地址,而不是http://,,以具有.ics文件扩展名的文件名结尾。
从菜单中选择Add by URL。查找iCalendar格式的Google地址,或者如果您有来自不同应用程序的日历的iCalendar地址(例如,苹果的iCal),您也可以使用这个地址。在提供的字段中输入地址。 ..。 注意: ICS的更改可能需要8个小时才能在Google日历中反映出来
从那以后就一直是这样
...You还应该将此日历视为定期检查更改的内容,而不是一次性导入的日历。简单但有效。
因此,如果是it really isnt the case,where you just add url to your the ics resource to your calendar and it will automatically update,那么这可能与webcal uri方案是非官方的以及IANA文档充满未知这一事实有关。
如果您只需要单向同步,那么就不需要DAV服务器。您只需要一个双向同步的CalDAV服务器;如果您希望客户端也更新服务器上的日历的话。
https://stackoverflow.com/questions/23206761
复制相似问题