1

我尝试使用 Google Calendar v3 API 完成一项相对简单的任务,但我一直遇到 404 错误。我只需要访问一个日历(属于我的客户)并通过 Javascript 获取只读事件数据(仅使用带有 Ajax 调用的协议),所以我试图避免使用身份验证。

我通过转到日历共享设置单击“与他人共享此日历”然后选择“将此日历公开”来公开日历。但是,我唯一的公开选项是“仅查看空闲/忙碌(隐藏详细信息)。 "

意识到这一点后,我编辑了每个事件以专门将类型设置为“公共”。

现在,我可以从日历资源中获取 eventList,但是数组中的每个项目只有一些细节(见下文)。而且,当我尝试访问单个事件时,我得到一个 404。

尝试使用基本测试日历后,我相当确定日历共享设置是问题所在。我客户的日历和我使用的测试日历之间的主要区别在于,他的日历是 Google Apps for business 帐户的一部分,我很确定。

日历本身中是否有任何设置我可以编辑以使 API 工作而无需使用身份验证来访问数据?或者,在商业应用程序设置中是否有一个选项可以让我的客户更改?同样,我说的是仅使用 Javascript 在一个特定日历上执行 GET 请求,因此不需要进行身份验证。

我真的没有代码可以在这里显示,因为我只是通过 URI 获取数据;在 API 文档中使用资源管理器工具时,我遇到了同样的问题(404)。但是,正如您所料,当我使用该资源管理器工具进行身份验证时,事件显示没有问题。

eventList 中的示例项目:

  {
   “种类”:“日历#事件”,
   "id": "(idremoved)",
   “状态”:“确认”,
   “更新”:“2012-05-29T21:06:42.000Z”,
   “开始”: {
    “日期时间”:“2012-06-18T19:00:00-05:00”
   },
   “结尾”: {
    “日期时间”:“2012-06-18T21:00:00-05:00”
   },
   “知名度”:“公开”
  }
4

1 回答 1

0

我正在使用以下内容来阅读 Google Apps for Education 日历,它具有与 Business 相同的 api 和安全限制。

拿到公共日历地址后,我决定解析完整版的日历而不是基础版:

https://www.google.com/calendar/feeds/your_calendar_id_here%40gmail.com/public/full

从我所见,如果您的日历是公开的,那么您的活动也会是公开的。您需要确保只需粘贴 url 即可在浏览器中访问您的日历的公开内容。通过这样做来检查事件是否也是公开的。确保日历是公开的,但未选中“仅共享我的忙/闲信息(隐藏详细信息)”框

于 2012-06-01T01:57:41.590 回答