Google calendar api 如何通过CalDAV API访问Google日历?

Google calendar api 如何通过CalDAV API访问Google日历?,google-calendar-api,caldav,Google Calendar Api,Caldav,我正在尝试通过CalDAV API访问Google日历(我使用服务帐户作为应用程序类型) 我已经编写了以下代码,但是当HTTP方法被放置或发布并输出一个状态代码为405的错误“HTTP方法不允许”时,这不起作用。但是,当方法为GET或DELETE时,它可以正常工作 需要“google/api\u客户端” client=Google::APIClient.new( 应用程序名称:“测试”, 应用程序_版本:“1.0.0” ) 日历id='日历id' 基本URL=”https://apidata.g

我正在尝试通过CalDAV API访问Google日历(我使用服务帐户作为应用程序类型)

我已经编写了以下代码,但是当HTTP方法被放置或发布并输出一个状态代码为405的错误“HTTP方法不允许”时,这不起作用。但是,当方法为GET或DELETE时,它可以正常工作

需要“google/api\u客户端”
client=Google::APIClient.new(
应用程序名称:“测试”,
应用程序_版本:“1.0.0”
)
日历id='日历id'
基本URL=”https://apidata.googleusercontent.com/caldav/v2/#{calendar_id}/events/“
key=Google::APIClient::KeyUtils.load_from_pkcs12('P12_文件','notasecret')
client.authorization=Signet::OAuth2::client.new(
令牌\u凭据\u uri:'https://www.googleapis.com/oauth2/v3/token',
观众:'https://www.googleapis.com/oauth2/v3/token',
范围:'https://www.googleapis.com/auth/calendar',
发行人:'foobar@developer.gserviceaccount.com',
签名(密钥:密钥)
client.authorization.fetch\u access\u令牌!

body=最初的问题是不能像CalDAV那样放入集合资源。有关更多详细信息,请参见规范的第1部分。换句话说,URL应该类似于“../events/somerandomeventid.ics”

也就是说,你走的是一条糟糕的道路

  • 您正在使用的API客户端不适用于CalDAV

  • 除非你有充分的理由使用CalDAV,否则不要。使用
  • 日历不适用于这样的非用户帐户。当然,它可能会工作,但它不符合产品/API的精神

“除非你有充分的理由使用CalDAV,否则不要使用。”-你能详细说明一下这一点吗?CalDAV是一个更广泛的标准,默认使用Google日历API对我来说就像是供应商锁定。主要是在互操作性和灵活性/表达性之间进行权衡。CalDAV是一个标准,是的。如果您的目标是能够使用尽可能多的不同日历系统,请继续。另一方面,如果您的目标是充分利用GoogleCalendar的功能,请使用CalendarAPI。它更简单,更富有表现力。