问题标签 [carddav]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
277 浏览

python - 请求通讯录时出现错误 400 INVALID_ARGUMENT

我正在设置 Google Contacts CardDAV API 客户端。

OAuth 2.0 使用oauth2client.
请求使用requests.

但是当我请求获取地址簿的 url 时(我从Location第一个请求的标头中获取它),它返回错误:

完整的请求信息

第一个请求


第二个请求


0 投票
1 回答
420 浏览

caldav - Baikal CalDAV:未找到“授权:基本”标头版本。0.6.0 MacOSX 日历

以前我们使用的是贝加尔湖版本。0.5.3,我们测试了 Thunderbird 和 Mac OSX 日历,最近我们升级到了版本。0.6.0,之后 Thunderbird 工作但 Mac OSX 日历不工作

错误日志:用户未授权:Baikal DAV:未找到“授权:基本”标头。客户端没有发送,或者服务器配置错误。需要登录才能获得特权:{DAV:}read on principals/xyz@rediff-inc.com

我在 MacOSX 上使用这个 URL:http: //domainz.com/cal.php/principals/xyz@domainz.com

0 投票
1 回答
80 浏览

google-api - 无法通过 Google CardDAV API 的同步收集操作跟踪更改者

我正在尝试使用 Google CardDAV API 的同步收集操作。文档中没有很好地解释。但我认为以下是他们在本文档中解释的内容。

首先,使用 propfind 操作从通讯录中发现同步令牌。以下是我的请求,我成功获得了同步令牌。

要求

回复

然后我们必须使用同步令牌进行同步收集操作以获取先前状态的更改,但这不会返回任何项目,无论我在https://contacts.google的联系人列表中所做的任何更改.com/

要求

回复

请让我知道我做错了什么。

0 投票
1 回答
238 浏览

php - CardDAV 从 iCloud 获取所有联系人

我尝试从 iCloud 帐户获取所有联系人...

首先我运行:

然后我得到/xxxxxxxxxxx/carddavhome/并运行:

这给了我 URL https://pXX-contacts.icloud.com:443/xxxxxxxxxxx/carddavhome/然后我向这个 URL 发送以下请求:

我得到:

如果我尝试将其运行到 URL https://pXX-contacts.icloud.com:443/xxxxxxxxxxx/carddavhome/contacts

我得到:遇到格式不正确的 XML,意外的根节点

我的错误是什么?前 2 个查询有效并给了我预期的结果,第 3 个应该给我地址簿和组的列表,第 4 个应该给我所有的 VCard。

0 投票
1 回答
207 浏览

calendar - JavaScript 中 CalDAV 的增量同步

我想从服务器获取 CalDAV 日历和地址簿,将值本地存储在磁盘上以缓存它们,并保存 syncToken。然后,稍后,在一段时间内或最迟在应用程序的下一次启动期间,再次运行同步。在第二次同步期间,我只想获取那些(并且正是那些)更改的日历条目和联系人(包括添加、删除或修改)。

我无法从lambdabaa/dav = npm dav的日历和地址簿同步 API 中弄清楚如何做到这一点。文档没有描述这一点。有一个syncCalendar()函数,从名字上看应该可以做我需要的,但是没有描述参数和整个过程。在代码中,有一个syncToken(然后还有一个ctagand etag)。我正在尝试使用syncToken,它应该可以满足我的需要,但它没有。

在同步之后,我获取calendar.syncToken并存储它,在下一次同步之前(可能是在重新启动之后),我恢复了 syncToken。但我每次都能完全同步。似乎我使用的 API 错误,但我不知道什么是正确的。

专用测试用例:

  1. git clone https://github.com/benbucksch/test-dav-sync/
  2. yarn install
  3. yarn start

代码,对于自包含性:

针对 NextCloud 运行时的输出:

预期输出为:

  1. 第二次同步返回 0 个条目。
  2. calendar.syncToken在初始化和登录后不会立即设置。

在 init 之后已经设置的事实syncToken表明我在这里误解了 API。

0 投票
0 回答
99 浏览

carddav - 如何查询 CardDAV

我期待在网络上找到更多关于 CardDAV 的信息,但不幸的是我没有得到它。

rfc6352在1-1指出,服务器必须理解并使地址数据服务器端可搜索,但我不知道该怎么做。

任何人都可以给我一个关于资源的提示,关于如何找出我可以发送到服务器的内容吗?对于初学者,我想:

  • 使用用户/密码(基本身份验证)连接到 CardDAV 服务器
  • 获取用户有权访问的地址簿及其层级位置
  • 对于每个地址簿,获取其条目(简化为名字/姓氏、数字 + 类型)

我打算做的是为 Grandstream 电话建立一个网关,可以通过 https 访问它并返回一个生成的电话簿 XML。

补充一点可能有用,我想与 kopano/sabre-dav 对抗。

0 投票
0 回答
138 浏览

webdav - 在 CardDAV 中搜索

我想编写一个小的 LDAP 2 CardDav 网关,它在它的 LDAP 端获取请求(来自桌面电话/PBX)并将其转换为 CardDAV 请求。

因此,我使用了原始 HTTP/XML 请求并且能够:

  • 使用和查询基目录/kdav/addressbooks/PROPFINDdepth: 1
  • 对于<d:resourcetype><d:collection>递归重复查询的结果
  • 将结果<d:resourcetype><card:addressbook>添加到地址簿列表
  • 递归完成后,对地址簿列表进行REPORT查询<card:addressbook-query><card:address-data><card:prop name="TEL"><card:prop name="N"></card:address-data>

现在,这使我目前可以获取所有联系人并创建一个 phonebook.xml,可以通过我的手机获取。

不幸的是,我无法将 限制PROPFIND为仅返回<d:resourcetype><d:collection>or的结果<d:resourcetype><card:addressbook>。这是有问题的,因为我可以有嵌套的地址簿,它返回所有子PROPFIND节点,在最坏的情况下,这意味着我查询一个没有嵌套地址簿但有 500 个联系人的地址簿,所以我得到了 500 个结果,我完全过滤掉了在客户端。

关于如何更有效地解决这个问题的任何想法?

另外这里是我目前得到的响应示例,这使我假设地址簿是嵌套的。服务器是Kopano,要么我误解了嵌套地址簿,要么它违反了规范。

0 投票
0 回答
141 浏览

asp.net-core - 自定义 CardDAV 服务器:客户端(尤其是 iOS)似乎不请求实际联系人

我正在尝试在NWebDAV和 ASP.NET Core 3.1 之上实现自定义 CardDAV 服务器,使用现有数据库作为联系人的实际数据源。(NWebDAV 似乎对基本的 WebDAV 概念有很好的支持,比如响应PROPFIND。开箱即用,运行它的示例项目来服务你的主目录似乎工作得很好。OTOH,像这样的东西REPORT显然丢失了,我还不确定如何很多工作要做。)

我使用 iOS 13 作为我的主要测试客户端。

我已经成功地将它:

  • 将我的服务器添加为帐户时通过“验证”(包括基本身份验证)
  • 在“通讯录”应用的“组”视图中显示我正在服务的多个通讯簿

所以我知道它正在解析我的PROPFIND回答。但后来,什么都没有。据我了解,它应该向我的服务器发出某种REPORT请求,要么首先进行完全同步,要么——在搜索字段中输入内容时——查询特定联系人。它似乎永远不会尝试。

我给它类似的东西:

它会PROPFIND针对每个地址簿发出请求,如下所示:

我对此作出如下回应:

(我已经实现me-card了,因为有人说不这样做可能会使 iOS 联系人崩溃,并希望它会提示 iOS至少尝试获取我的卡片。但是,唉。)

此响应包括地址簿本身的元数据以及其中的示例联系人。我不确定这是否正确,但离开那个联系似乎并没有改变任何事情。

我支持报告addessbook-queryaddressbook-multiget. 我对规范中的8. Address Book Reports的阅读是,这应该足以符合标准。

让我感到困惑的是,只有……什么都没有。没有面向用户的错误,没有进一步的请求等。

我确实在控制台中找到了一些东西:

但我不知道这是否指的是这个帐户(可能是不同的服务器)。如果是这样,我很想知道是什么让 iOS 得出了这个结论?

所以,我的主要问题是:我是否有基本假设正确,即 CardDAV 客户端最终应该发出REPORT查询联系人的请求?

0 投票
0 回答
43 浏览

icloud - CardDav(iCloud)补丁禁止响应的原因是什么?

是否还有其他人注意到对现有 vcard 文件更新的奇怪禁止响应?

请参阅我的卷曲示例:

大多数时候的响应是“403 Forbidden”-但有些电话似乎通过了。

0 投票
0 回答
117 浏览

android - 将android联系人与我自己的rest api同步

我想用我自己的服务器(基于 REST 的服务)定期更新我的 android 手机上的联系人。是否可以创建简单的服务以在后台运行并与我的 REST 通信以从服务器获取更新,或者我应该将联系人转移到 ex。carddav 并使用现有的 android 应用程序下载它们?