使用服务器作为CalDAV客户端来同步日历数据和问题

对于日历应用程序,我想知道第三方日历事件更改。 例如,用户将iCal / Google日历添加到我的应用程序中。 我的应用程序应该被通知事件的变化。 经过一番研究,似乎CalDAV就是这样做的。 但我不完全了解应用程序应该如何工作。

所以我的理解到目前为止:我将我的服务器作为一个CalDAV客户端。 用户将提供login凭据到我的应用程序从日历中获取数据? 我有两个问题:安全性和性能(如何同步)

安全

这听起来像是有效的,但它是非常不安全的(因为我将不得不提供我的login凭据到一些不受信任的服务器)? 似乎应该使用OAuth呢? 有没有我不正确的理解?

如何同步和性能

我希望收到日历更改的通知(例如,如果用户更新Google日历)。 类似的webhooks应该是最好的。 但是有这样的事情吗? 当我看到NPM中的一个dav包时,似乎就像它的全部拉动一样。 如果我必须不断地调查变化,可能是非常低效的?

我打算使用NodeJS构build服务器

对于安全,你是对的。 对于许多(大多数)CalDAV服务器,您将需要存储用户凭据(通常使用基本或摘要式身份validation)。 哪个不好。 虽然有些服务器(如Google CalDAV API)支持(甚至需要)OAuth。

要推动,你是对的。 DAV还没有标准推送。 有些服务器会像iCloud或Apple CalendarServer那样推送,但是他们使用私有协议来做这些事情,这些协议不会帮助你的用例。 所以是的,你很可能不得不轮询(确保使用同步报告,使其效率)。 虽然所需的投票请求不是太昂贵,可以经常运行。

简而言之:你的分析是正确的。 CalDAV目前的版本主要针对纯粹的客户端 – 服务器交互,并且对于您的应用程序有缺陷。 虽然它仍然是你最好的select:-)