【问题标题】:OAuth2/Google CalDAV - List of calendars for userOAuth2/Google CalDAV - 用户日历列表
【发布时间】:2021-09-24 20:25:11
【问题描述】:

我曾经请求 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/{calid}/user
这里的“calid”必须是一个特定的日历 [1] 有iis说:

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

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

有什么建议可以让他们进入 Google/CalDAV/V2 世界吗?

君特

另请参阅: [1]https://developers.google.com/google-apps/calendar/caldav/v2/guide

【问题讨论】:

  • 已解决,见这里link

标签: oauth-2.0 caldav gcal


【解决方案1】:

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

  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 principal-match 查找 calendar-home-set 的方法在我的情况下不起作用。

  1. PROPFIND calendar-home-set,Depth 标头值为 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多