OAuth2/Google CalDAV - 用户日历列表

2024-01-04

我曾经请求 caldav 服务器为给定用户提供所有定义的日历。这适用于 fruux/ownCloud(Sabre) 以及 GCalendar 的经典方法。 请求是这样的:

method: PROPFIND  headers:Depth: 1  
urlstr:https://www.google.com/calendar/dav/{theUserName}@gmail.com/  
contentType:application/xml  
content:
<d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/" xmlns:c="urn:ietf:params:xml:ns:caldav">  
  <d:prop>  
    <d:resourcetype />  
    <d:displayname />  
    <cs:getctag />  
    <c:supported-calendar-component-set />  
  </d:prop>  
</d:propfind>  

迁移到 Google OAuth2 有不同的调用, ulrstr: 会像https://apidata.googleusercontent.com/caldav/v2/ https://apidata.googleusercontent.com/caldav/v2/{calid}/用户
这里的“子”必须是特定的日历 [1] 有句话说:

其中 calid 应替换为要访问的日历的“日历 ID”

目的是获取用户帐户的所有日历!所以这些电话不会有帮助。

有什么建议如何让它们进入 Google/CalDAV/V2 世界吗?

Günter

也可以看看: [1]https://developers.google.com/google-apps/calendar/caldav/v2/guide https://developers.google.com/google-apps/calendar/caldav/v2/guide


答案评论中的链接已损坏。 所以我在这里写了一个有效的答案。

  1. 使用 PROPFIND 查找当前用户的主体。
PROPFIND https://apidata.googleusercontent.com/caldav/v2

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:">
    <D:prop>
        <D:current-user-principal/>
    </D:prop>
</D:propfind>

2.PROPFIND calendar-home-set 包含我们在上述请求响应中获得的主要 URL。

PROPFIND https://apidata.googleusercontent.com/{user-principal-path}

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:">
     <D:prop>
       <C:calendar-home-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>
     </D:prop>
</D:propfind>

cf) 使用 REPORT 主体匹配查找日历主页集的另一种方法在我的情况下不起作用。

  1. PROPFIND 日历主页设置,深度标头值为 1。
PROPFIND https://apidata.googleusercontent.com/{calendar-home-set-path}
Depth: 1

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:"
            xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:prop>
        <D:displayname/>
        <D:resourcetype/>
        <C:supported-calendar-component-set/>
     </D:prop>
</D:propfind>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OAuth2/Google CalDAV - 用户日历列表 的相关文章

随机推荐

  • JavaScript 对象 ID

    JavaScript 对象 变量是否有某种唯一标识符 就像鲁比那样object id 我指的不是 DOM id 属性 而是某种内存地址 如果您想在不修改底层对象的情况下查找 关联具有唯一标识符的对象 您可以使用WeakMap https d
  • Vanilla Javascript 切换下拉菜单

    我的大脑已经检查过了周末 我正在寻找一种纯 Javascript 解决方案 如果在单击另一个主菜单项时打开一个下拉菜单框 则先前打开的下拉菜单将关闭 然后显示新单击的主菜单项的下拉菜单 我知道这可能很简单 但我无法想出一个不复杂的解决方案
  • 将值从单元格复制到列的其余部分

    有没有人可以帮助我分解这个长公式 并通过检查独立元素来帮助我们理解它是如何工作的 它需要两个连续的列 在本例中为 A 和 B 首先从 A 中获取一个值 如果 A 下方有下一个值 它将重复实际值直到该行 如果 A 中没有剩余值 则返回 空白
  • 如何配置.net core以将身份验证cookie发送到不同的域

    我正在尝试将 cookie 与前端一起使用 该前端的域与后端的域不同 后端是用 net core实现的 前端是Angular 我研究过 在进行 http 调用时需要设置 withCredentials true 但是当我将其设置为 true
  • AngularJS ui-router 视图结构产品站点

    所以我正在创建一个产品网站 有点像网上商店 该网站将有一个带有顶部菜单的标题 一个带有过滤器的侧边栏 一个内容区域和一个页脚 我希望侧边栏过滤器根据所选的顶部菜单进行更新 因此 当我在顶部菜单中选择新项目时 左侧的过滤器应该更新 并且在选中
  • ExecuteSQL 和 ExecuteSQLRecord 之间的区别

    我想了解两个处理器之间的区别ExecuteSQL and ExecuteSQLRecord V1 8 及以上 后者是否提供了额外的东西 ExecuteSQL不是吗 我已经看到的一件事是执行 SQL 不维护 状态 做ExecuteSQLRec
  • 检查变量是否为空

    我有一些用户提交的变量 我想将它们显示在网站的不同部分 如下所示 div class pre box Term div div class entry div 有时 这些变量可能为空 在这种情况下我不想显示空变量的标签 在上面的例子中我想隐
  • 如何避免 c++ 和 boost::python 文档之间的冗余?

    我使用 boost python 在 C 代码中添加 python 模块 C 项目使用 doxygen 进行记录 我想为 python 模块创建一个文档 但我不知道如何不像这样冗余 include
  • java中的尾递归

    这是展示尾递归的好例子吗 public printName System out println Smith printName 我不打算在现实生活中这样做 但我将此作为考试的例子 这是正确的吗 不 有两个原因 尾递归仅在编译器支持时才有价
  • 当我查询模式时,MySQL 给出波动的行数?

    在这里 我在笔记本电脑上的开发数据库上按下并运行相同的命令 一遍又一遍 mysql gt select count from tblTraceOutput count 300175 1 row in set 0 42 sec mysql g
  • Javascript 事件监听器退出(?)监听...Youtube API - 无控制台错误

    EDIT 2016 06 25 我删除了 6 月 16 日的更新 因为不再相关 我在下面留下了我的OP 今天我又花了 4 个小时在这上面 现在的情况是这样的 我的功能WORKS对于两个链接 视频参数在数组中定义 另外两个链接不起作用 I g
  • 更改图例符号的大小

    如何更改图例中符号的大小 现在他们看起来像这样 我希望它们是与标题大小大致相同的正方形 查看文档后 我认为更改 symbolHeight symbolRadius 和 symbolWidth 可以解决问题 但事实并非如此 事实上 据我所知
  • 我将 IDENTITY_INSERT 设置为 ON,但收到 SqlException 提示它已关闭

    我试图从文本文件中获取数千张发票 和其他内容 并将它们插入到 SQL Server 2008 中 我编写了一个小控制台应用程序来执行此操作 它使用 LINQ to SQL 插入所有现有发票后 我想要Invoice ID作为一个身份列和自动增
  • Eclipse PDE:自定义 QuickFix 仅在问题视图中可用?

    我在自定义快速修复方面遇到了麻烦 我想在 Eclipse 插件中提供这些修复 并且我希望在 Eclipse PDE 方面比我更有经验的人能够在这个问题上为我提供一些提示 据我了解 我可以通过扩展扩展点来提供自定义的所谓 快速修复 或 解决方
  • PHP != 和 == 运算符

    这让我困惑了一段时间 我正在运行一个目录并回显其内容 并且我想排除 和 文件 现在 这段代码可以工作 if files scandir temp foreach files as file if file OR file else echo
  • 加密 Android 中的现有数据库

    我已经在 Play 商店中发布了一个应用程序 现在 我想加密应用程序的数据库 我知道 Android 版 SQLCipher 可以为我做到这一点 但问题是我的应用程序已经被很多用户使用 并且他们里面有很多未加密的数据 现在 如何将 SQLC
  • .emacs 中的多个自定义设置面和自定义设置变量?

    当我通过M x customize face菜单并将更改保存到磁盘 Emacs 将自动生成的代码添加到我的 emacs文件看起来像这样 custom set faces custom set faces was added by Custo
  • 将 numpy.array 存储在 Pandas.DataFrame 的单元格中

    我有一个数据框 我想在其中存储 原始 numpy array df COL ARRAY df apply lambda r np array do something with r axis 1 但似乎pandas尝试 解压 numpy a
  • Spark:从逻辑计划中提取数据帧

    这行代码将数据帧转换为逻辑计划 val logical df queryExecution logical 我们可以做相反的事情 即从逻辑计划中提取使用的数据帧吗 在 Dataset 对象中有一个方法 def ofRows sparkSes
  • OAuth2/Google CalDAV - 用户日历列表

    我曾经请求 caldav 服务器为给定用户提供所有定义的日历 这适用于 fruux ownCloud Sabre 以及 GCalendar 的经典方法 请求是这样的 method PROPFIND headers Depth 1 urlst