mstilkerich / carddavclient
用于发现和同步CardDAV服务器的CardDAV客户端库
Requires
- php: >=7.1.0
- guzzlehttp/guzzle: ^6.0.0 || ^7.0.0
- psr/http-client: ^1.0
- psr/http-message: ^1.0 || ^2.0
- psr/log: ^1.0 || ^2.0 || ^3.0
- sabre/uri: ^2.2
- sabre/vobject: ^3.3.5 || ^4.0.0
- sabre/xml: ^2.2 || ^3.0.0 || ^4.0.0
Requires (Dev)
README
这是一个用于PHP应用程序与存储在CardDAV服务器上的通讯录交互的库。
索引
功能
- 按照RFC 6764定义的CardDAV地址簿发现(使用DNS SRV记录和/或已知URI)
- 服务器端地址簿和本地缓存的同步
- 修改地址簿(添加/更改/删除地址对象)
- 使用Guzzle HTTP客户端库,包括对HTTP/2和包括OAuth2 bearer token在内的各种身份验证方案的支持
- 在应用程序接口处使用Sabre/VObject交换VCard
- 使用任何PSR-3兼容的日志记录对象记录日志消息和HTTP流量。为HTTP流量使用单独的日志记录对象,因为它可能非常详细,因此可以将HTTP日志记录到单独的位置或独立于库自己的日志消息禁用。
请参阅功能矩阵以了解哪些服务支持哪些功能;文件还包含了我所知的不同服务器的问题列表。
测试服务器
目前,此库已测试可与其他服务器互操作
- Nextcloud 18及以后版本(基本身份验证和GSSAPI/Kerberos 5)
- iCloud
- 通过CardDAV API的Google Contacts
- Radicale 3(也被Synology作为DSM CardDAV服务器使用)
- Owncloud 10
- Baïkal 0.7(摘要身份验证和GSSAPI/Kerberos 5)及以后版本
- Davical 1.1.7及以后版本
- SOGo 5.10
理论上,它应该可以与任何CardDAV服务器一起使用。如果不行,请打开一个问题。
注意:要使用除基本以外的任何身份验证机制,您需要安装带有对相应身份验证机制支持的php-curl扩展。
安装说明
此库旨在与composer一起使用,以安装/更新库及其依赖项。它旨在与PSR-4兼容的自动加载器(如composer提供的)一起使用。
通过composer将库作为依赖项添加到您的项目中
-
下载composer(如果您已经安装了composer,请跳过):说明
-
将此库添加到您的项目依赖项中
php composer.phar require mstilkerich/carddavclient
- 要使用composer在您的应用程序中使用此库,只需在主PHP文件中加载composer的自动加载器即可
require 'vendor/autoload.php';
自动加载器将负责加载此以及其他PSR-0/PSR-4自动加载器兼容库。
文档
快速入门
通常,使用此库的应用程序将想要执行以下一项或多项操作:
-
从用户提供的信息中发现地址簿:为此操作,库提供了一个服务类 MStilkerich\CardDavClient\Services\Discovery。该服务接受账户凭证和一个部分URI(至少是域名)并尝试发现用户的地址簿。它返回一个 MStilkerich\CardDavClient\AddressbookCollection 对象数组,每个对象代表一个地址簿。
-
在已知位置重新创建先前发现的地址簿。这可以通过简单地创建 MStilkerich\CardDavClient\AddressbookCollection 的实例来实现。
-
初始时以及定期同步服务器端地址簿与本地缓存:为此操作,库提供了一个服务类 MStilkerich\CardDavClient\Services\Sync。此服务执行同步,给定 MStilkerich\CardDavClient\AddressbookCollection 对象以及前一次同步操作返回的可选同步令牌。同步令牌是服务器端对特定时间点地址簿状态的标识。当提供同步令牌时,服务器将只报告由同步令牌标识的状态与当前状态之间的差异。这可能因各种原因而无法工作,最常见的原因是服务器不会无限期地保留同步令牌。在这种情况下,将执行完整同步。同步结束时,如果服务器提供,服务返回反映地址簿同步状态的同步令牌。
-
对服务器端地址簿进行更改,如创建新的地址对象。这些操作直接作为 MStilkerich\CardDavClient\AddressbookCollection 类的方法提供。
-
搜索服务器端地址簿以检索符合某些过滤标准的卡片。此操作通过 MStilkerich\CardDavClient\AddressbookCollection::query() API 提供。
库附带了一个演示脚本 doc/quickstart.php,展示了如何执行上述所有操作。
示例应用程序
有关使用此库的简单演示应用程序,请参阅 davshell。它展示了如何使用库进行地址簿的发现和同步。
作为一个更复杂的实际应用,您还可以查看 Roundcube CardDAV 插件,它也使用此库与 CardDAV 服务器进行交互。
API文档
API 概述可在 此处 获取。
最新发布版本的 API 文档可在 此处 找到。库的公共 API 可在导航侧边栏的 Public
包中找到。
可以使用 phpDocumentor 从源代码生成 API 文档,运行 make doc
。