代码之家  ›  专栏  ›  技术社区  ›  mr_lou

仅提供联系人服务-类似于CardDAV

  •  0
  • mr_lou  · 技术社区  · 3 年前

    多年来,我创建了一个相当大的商业智能系统。它已经提供客户和联系人的vCard导出。但这当然是一个乏味的过程,每个员工都必须在手机上手动导入vCard文件。

    所以我读到了关于CardDAV的文章,认为这可能是一个更好的解决方案。然而,我真正需要的只是能够为联系人提供只读源。任何人都不可能更改联系人(好吧,除非是临时在自己的电话簿中,直到下一次同步发生)。所有其他功能也不感兴趣。我只需要“将联系人从BI同步到手机”部分。

    我希望它会很简单。类似于只使用vCard生成的文件(或生成它的PHP文件)的url。但我能看到 question 之前被问了几次,但没有人给出任何答案,所以我想事情并没有那么简单。

    有人能分享一下这方面的情况吗?是否可以只提供一个与CardDAV协议兼容的简单只读url?

    如果没有,那么还有其他协议支持这样的东西吗?

    0 回复  |  直到 3 年前
        1
  •  1
  •   hnh    3 年前

    使用单个端点URL是不可能的,但也不是超级复杂。为了使其只读,您将拒绝带有“403 Forbidden”的PUT,并可以选择添加相关的WebDAV权限属性(尽管许多客户端可能会忽略这些属性)。

    您需要:

    • CardDAV主体记录的一个端点,表示用户访问您的系统,并将客户端指向“CardDAV主页”。这是一个响应PROPFIND的简单XML文档。
    • CardDAV“主页”的一个端点,这是一个WebDAV集合,其中包含您公开的“联系人文件夹”,很可能只有一个。这也是一个简单的XML,再次使用PROPFIND。
    • 一个端点表示CardDAV联系人文件夹,它指向实际的vCard资源。列出所包含vCard的URL的XML,再次使用PROPFIND。
    • 好吧,每个vCard都有一个端点,这是通过GET查询的。(如果您想允许创建/修改/删除,请使用PUT或DELETE)

    这是关于协议的一个很好的资源: https://sabre.io/dav/carddav/

    另一个选项可能是LDAP,但它比CardDAV稍微复杂一些。(您可以使用openldap为协议提供服务,并使用LDIF文件填充它)。

    推荐文章