谷歌日历API -导入事件:所有者必须是组织者或与会者



我正在使用谷歌日历API为我的一个项目。

我想从我的应用程序导入事件到谷歌日历,并锁定它们,以便最终用户将无法在谷歌日历中修改它们。

到目前为止,API工作得很好,但是,当我尝试导入一个事件时,我得到了这个错误:

日历的所有者必须是所导入事件的组织者或参与者。

即使我将组织者设置为日历的所有者之一。

下面是API控制台的POST示例:
POST https://www.googleapis.com/calendar/v3/calendars/_my_calendar_id%40group.calendar.google.com/events/import?key={YOUR_API_KEY}
Content-Type:  application/json
Authorization:  Bearer ya29.AHES6ZTdiWGywGp2LLSUlc8BV-dVIwJET5azIkNekjNgRjHRWc_Ojg
X-JavaScript-User-Agent:  Google APIs Explorer
{
 "end": {
  "dateTime": "2013-01-02T16:22:00+00:00"
 },
 "iCalUID": "123456789",
 "start": {
  "dateTime": "2013-01-02T14:22:00+00:00"
 },
 "organizer": {
  "email": "_this_is_the_owner@gmail.com",
  "displayName": "Owner Guy"
 },
 "attendees": [
  {
   "email": "_this_is_the_owner@gmail.com"
  }
 ]
}

复制步骤:

  • 创建一个日历并获取ID或使用"primary"作为主日历。
  • 与他人分享,或者让某人成为所有者。
  • 转到Calendar API Reference/events/import ->"Try it!",在提交POST之前使用oAuth进行身份验证。
  • 填写所需字段(start, end, icaluid等)
  • 尝试将组织者或任何与会者设置为日历的所有者之一。

关于错误信息:

日历的所有者必须是所导入事件的组织者或参与者。

IMHO, The owner实际上不是指Google用户,而是指您正在处理的Email-like Calendar ID。这就解释了为什么有些情况下只适用于primary日历,因为主日历与其所有者用户(xxx@gmail.com)具有相同的id。

那么,你可以试试这些:

  1. 不要设置任何与组织器相关的字段。然后Google为字段设置适当的值(attendees[].organizerorganizer)。
  2. 设置日历ID为attendee[].email

根据我的实验(我不知道这在任何地方都有记录),您只能将与会者的事件"导入"到帐户中的"主"日历(而不是子日历)。我不知道为什么会这样。还要注意,'import'创建了事件的私有副本,并且对事件的更改不会传播给其他与会者(尽管可能会传播给与会者状态)。

最新更新