用两种方式将Google日历与PHP同步

8
我正在创建一个使用Google Calendar API的PHP网站。通过登录后,从PHP网站中创建、更新和删除任何事件都可以成功地添加到我的Google日历事件中。
在我的网站上创建的事件将被创建在Google日历中。
现在我想要的是:当我从测试页面创建一个事件并登录后,它会被添加到Google日历中,然后如果我从Google日历中更新或删除该事件,则应自动更新或删除PHP网站上的事件。
基本上:单向同步正常工作,但现在我想要双向同步。
如果有人有任何想法,请与我分享,将不胜感激。

我想要的是,如果我从我的“Google日历”中删除了一个已同步的“Google事件”,它也应该从我的已同步PHP应用程序中删除。 有人有这方面的想法吗? - rahim.nagori
3个回答

6

谷歌日历(gCal)中没有应用程序挂钩,可以在事件被删除时触发操作。相反,您必须定期轮询gCal(可以是每几分钟/小时的cron作业),并相应地更新您的日历,或者每次从您的日历执行操作时,有可能进行完全重新同步的1 / X。

这意味着您正在使用gCal作为权威来源,并将这些更改镜像回您的本地应用程序。


1
我同意Andy的观点,API中没有办法做到这一点。 - JoshBerke

2

在按照这些答案并构建了一个双向同步过程之后,我意识到自2013年以来日历应用有了推送通知功能。

尽管如此,您仍然需要进行完整的同步过程,因为推送通知只能通知更改,但不能提供更改数据。

希望这会节省您一些时间。

推送通知


1
如果你像我一样难以置信,API推送通知“日历已更改”,但却没有说明“更改了什么”,那么这篇文章——不幸的是——证实了这个坏消息。请参见此链接:https://plus.google.com/+MatthewZimmerman/posts/ag6CEJoXxbM - elbowlobstercowstand

1

你的系统是否可以生成一个特定于用户的iCal输出URL,然后让用户在Google日历(或其它支持iCal的日历)中订阅该日历呢?

这样,你的系统将始终拥有权威的日历,而Google日历将自动反映你所做的任何更改。

或者,如果你想要在Google日历中进行的更改也能够反映在你的应用程序中,那么你可以订阅用户日历的iCal,并定期轮询以反映用户在那一端所做的任何更改。

我倾向于第一种选择(通过Google日历订阅你的iCal),因为它是一个更简单、更容易的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接