当前位置: 首页 > 知识库问答 >
问题:

客人可以修改的活动不会通过谷歌日历api更新

权承
2023-03-14
  1. 组织者使用“guestsCanModify:true”创建谷歌活动
  2. 当与会者尝试通过谷歌日历api(例如:补丁)更新此活动时,不会将其改为原始活动。我通过谷歌日历网站观看了这一活动记录,“本次活动的细节有所更改,但仅反映在日历上”
  3. 当与会者尝试通过谷歌日历网站更新此活动时(https://calendar.google.com/),我可以更改原始事件。这将重定向到组织者日历

使用谷歌日历api时有什么问题?

我使用谷歌日历参考页。https://developers.google.com/calendar/v3/reference/events/patch我指定了“calendarId”(与会者的日历id)、“eventId”和请求正文(例如摘要、说明等)

下面是示例代码。

组织者的谷歌帐户是“organizer@sample.com”,与会者的谷歌帐户是“attendee@sample.com”。与会者被邀请参加一些活动,并且与会者希望更新某些活动属性,如摘要。我已将 ID 和电子邮件地址更改为虚构的 ID 和电子邮件地址。

    < li >与会者收到这样的邀请事件。
{
 "kind": "calendar#event",
 "etag": "\"xxxxxx\"",
 "id": "eventidsample",
 "status": "confirmed",
 "htmlLink": "https://www.google.com/calendar/event?eid=sample",
 "created": "2020-08-05T02:39:16.000Z",
 "updated": "2020-08-06T04:59:51.271Z",
 "summary": "Meeting",
 "description": "Talk about product.",
 "creator": {
  "email": "organizer@sample.com",
  "displayName": "Organizer"
 },
 "organizer": {
  "email": "organizer@sample.com",
  "displayName": "Organizer"
 },
 "start": {
  "dateTime": "2020-08-05T10:00:00+09:00"
 },
 "end": {
  "dateTime": "2020-08-05T11:00:00+09:00"
 },
 "iCalUID": "eventidsample@google.com",
 "sequence": 0,
 "attendees": [
  {
   "email": "organizer@sample.com",
   "displayName": "Organizer",
   "organizer": true,
   "responseStatus": "accepted"
  },
  {
   "email": "attendee@sample.com",
   "self": true,
   "responseStatus": "needsAction"
  }
 ],
 "guestsCanModify": true,
 "reminders": {
  "useDefault": true
 }
}

curl --request PATCH \
  'https://www.googleapis.com/calendar/v3/calendars/attendee%40sample.com/events/eventidsample?key=[YOUR_API_KEY(Attendee's key)]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"summary":"Meeting title updated"}' \
  --compressed

此更新对组织者没有影响,仅对与会者可见。但是,与会者通过Google日历网站更新活动的摘要,更新会影响组织者。

共有1个答案

周浩博
2023-03-14

不幸的是,考虑到这个问题跟踪器的结果,这似乎是目前的预期行为:

  • API不支持将事件修改为来宾

客人可以编辑他们的活动副本,但此版本不会反映在组织者的日历上,只会反映在与会者的日历上。

当然,客人也可以直接在组织者日历上编辑活动,但这需要客人有权访问组织者日历。

考虑到这在UI上是可能的,但不是通过API,我强烈建议您在这个问题跟踪器组件上提交一个功能请求。

 类似资料:
  • 你能给我一个关于如何通过谷歌日历api分享单个事件的提示吗?

  • 但我找不到可以在谷歌日历api中指定此选项的位置。创建事件时,如何使用gcal api将guestsCanModify设置为true?

  • 我想知道我是否需要Google java客户端库才能从GAE访问我的Google日历。默认情况下,它们是Google App Engine SDK的一部分吗? 此外,我找不到一个很好的示例或教程来展示如何从Google Cloud Platform应用程序创建、读取、更新和删除Google日历事件。 非常感谢,如果您可以提供相同的代码示例或链接到适当的工作教程。

  • 接下来,我生成了自己的OAuth2客户机ID并使用它。这种方法很简单,直到我开始收到来自Google的“匿名使用过期”错误,一段时间后我意识到这是因为密钥没有启用只读日历范围。 我的下一个想法是公开日历,并使用静态API密钥,但日历是从一个名为Peak Pro的预订服务中同步的,该服务用参加活动的客户的姓名、电子邮件和电话号码填充日历描述。我不能公开揭露那些。 接下来,我被吸引到了CalDAV A

  • 我将使用google play services活动识别api编写一个应用程序。android开发者网站上的培训是直接进行的,但在过去的几个小时里,我编写了一个简单的应用程序,但没有得到任何结果。更新:实际上,我将在5秒钟的时间间隔内以toast消息的形式显示用户的当前活动(如ActivityRecognitionService-Intent服务中的OnIntentHandler方法所示)。我认为

  • 因此,我已将服务号设置为域范围的授权,如本文所述执行谷歌办公套件域范围的授权。在谷歌办公套件管理控制台中,我已授权服务号使用OAuth 2.0范围: 每次我试图创建一个事件,最终都会出现这个错误 这建立了google凭据,不使用模拟,日历与服务号共享。