【问题标题】:Using a Server as a CalDAV client to sync calendar data and concerns使用服务器作为 CalDAV 客户端来同步日历数据和关注点
【发布时间】:2016-01-05 05:53:45
【问题描述】:

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

到目前为止,我的理解是:我将让我的服务器充当 CalDAV 客户端。用户将向我的应用程序提供登录凭据以从他们的日历中获取数据?我有 2 个问题:安全性和性能(如何同步)

安全

这听起来很有效,但它非常不安全(因为我必须向某些不受信任的服务器提供我的登录凭据)?似乎应该改用 OAuth?有什么我不能正确理解的吗?

如何同步和性能

我希望收到有关日历更改的通知(例如,如果用户更新了 Google 日历)。类似于 webhook 的东西应该是最好的。但是有这样的事情吗?当我在 NPM 中查看一个包 dav 时,似乎它都是基于拉动的。如果我必须不断地轮询更改,那可能效率很低吗?

我打算使用 NodeJS 构建服务器

【问题讨论】:

  • 你好,Jiew,如果你有一些反馈要分享,我对你的进步很感兴趣!
  • @mlb,目前我们决定不使用 CalDav 并依赖 App 从 iOS/EventKit 提供日历数据。为了研究,我设法获取了事件信息,但没有编辑/删除。看来 iCloud CalDav 正在为这些请求返回 403
  • @JiewMeng 可悲的是,我对苹果没有什么好说的,因为他们与其他人相处得不好......
  • 5年后这个有发展吗?正在寻找支持事件更改 webhook 的 CalDav 解决方案。

标签: node.js calendar caldav


【解决方案1】:

Wrt 安全,你是对的。对于许多(大多数)CalDAV 服务器,您需要存储用户凭据(通常使用基本或摘要身份验证)。哪个不好。尽管某些服务器(例如 Google CalDAV API)支持(甚至需要)OAuth。

Wrt 要推动,你又是对的。 DAV 的推送还没有标准。某些服务器会推送,例如 iCloud 或 Apple CalendarServer,但它们使用专有协议进行推送,这对您的用例没有帮助。所以是的,你很可能必须轮询(确保使用同步报告来提高效率)。虽然所需的轮询请求并不太昂贵并且可以经常运行。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多