【问题标题】:Can't get a list owned by me in Google Calendar API无法在 Google Calendar API 中获取我拥有的列表
【发布时间】:2021-08-04 07:19:59
【问题描述】:

使用 Google Calendar API v3 获取日历列表。 但是,有些用户无法检索自己所有者的日历。

我尝试使用 Try this API for CalendarList#list 来检索它, 但它没有返回所有者的日历。 https://developers.google.com/calendar/v3/reference/calendarList/list

但是,如果用户在 CalendarList#get 中指定 calendarId 为主, 可以成功找回。 https://developers.google.com/calendar/v3/reference/calendarList/get

你对我有什么建议吗?

【问题讨论】:

  • 你能分享你正在使用的代码/请求吗?主日历 ID 只是用户的电子邮件。您可以分享错误消息/响应吗?
  • 我刚刚在您复制的链接上尝试了一个带有“尝试此 api”的列表请求,并且在工作区和 gmail 帐户上都列出了主要帐户。您是否可以提供任何其他细节来尝试重现此内容?
  • @iansedano 确保您可以从 calendarList 中删除某些内容,并且仍然保留您对重新创建它的日历的访问权限。 CalendarList 只是一个 UI 项,它不包含所有用户有权访问的日历的列表,没有端点可以列出用户有权访问的所有日历。请检查我的答案
  • 有趣的@DaImTo,虽然 AFAIK 你不能删除你的主日历。我尝试在 UI 中取消选择主日历,因此我看不到事件,但它仍然显示在列表请求中。
  • @iansedano 是的,我想知道主要的问题是服务帐户还是 OP 混淆了,因为主日历实际上是用户的电子邮件地址作为日历 ID。他们实际上并没有向我们展示任何输出来证明他们的主张。

标签: google-api google-calendar-api


【解决方案1】:

无法在 Google Calendar API 中获取我拥有的列表

回答:没有端点可以返回所有拥有的日历或用户可以访问的日历的完整列表。由于此端点不存在,您的问题的答案是您不能按预期工作。

实际上您误解了日历列表是什么。见下文

什么是 calendarList,它是如何工作的?

calendarList.List 是显示在 UI 窗口左下角的列表。无法保证用户将在此列表中拥有任何内容,因为这取决于用户首先如何将日历添加到列表中。用户也可以从列表中删除它。 UI 倾向于自动执行此操作,但如果以编程方式添加它可能不会出现在用户日历列表中。因此,您不应该依赖 calendarlist 来包含用户有权访问的所有日历的列表。请看Events and calendars

但是,所有用户都有一个主要日历,您可以随时在primary 上执行calender.get,您将取回该用户的主要日历。

【讨论】:

  • @DalmTo 感谢您的回复。您的意思是我自己的电子邮件地址(主)日历未列出吗?我尝试将 owner 的值传递给 minAccessRole 参数,但它返回一个空数组。
  • 我发现了一个类似的问题。 *.com/questions/66936660/…
  • Google 并不认为 CalendarList 中有任何内容,并且有一小部分用户在日历列表中也没有主日历。您应该简单地做一个 calendarlist.insert 并为他们添加它。您可能还想查看issuetracker.google.com/…,但除非您的应用程序正在执行插入操作,否则我真的会停止依赖 calendarList。
最近更新 更多