【问题标题】:Google calendar API for PHP simple read-only request to get calendar events用于 PHP 的 Google 日历 API 用于获取日历事件的简单只读请求
【发布时间】:2014-11-28 01:24:03
【问题描述】:

我想为网站编写一些简单的 PHP 代码,以便使用 Google 的日历 API V3 以只读方式访问公开的 Google 日历事件列表。我只需要在网页上显示日历中即将发生的事件列表。我已经阅读了开发者文档并查看了getting started sectionget events example code,但我有点困惑。我想知道:

  • 是否有一种更简单的方法可以避免所有这些 OAuth 问题?有非认证访问方式吗?

  • 如果没有,看来我需要在 code.google.com/apis/console/ 上为我的应用设置访问权限,然后生成 ApplicationName、ClientID、ClientSecret、RedirectURI 和 DeveloperKey。 ApplicationNameDeveloperKey 非常简单,可以在 Google Console 中找到。但对于其他项目,我需要创建一个 OAuth 2.0 ClientID,这需要我选择应用程序类型是 Web 应用程序还是服务帐户。我的场景应该是什么?在这种情况下,不需要用户登录,因为我没有请求访问他们的日历——这只是我需要访问的公共日历。

  • 什么是重定向 URI 以及如何使用它。我应该如何设置它?

  • Google 的 API 示例获取并缓存会话数据中的访问令牌。然后代码 cmets 说不要这样做,而是应该使用数据库。严重地?我真的需要处理缓存访问令牌吗?如果是这样,Google API 中是否有内置的数据库缓存机制,或者您如何处理?

我真的在寻找一种更简单的方法。欢迎您的指导!

谢谢。

【问题讨论】:

    标签: php oauth-2.0 google-calendar-api


    【解决方案1】:

    我认为你想太多了。如果您只需要访问 public 日历上的事件,那么有一种方法可以做到这一点,而无需调用 Google Calendar API 和所有附加的复杂性。每个公共 Google 日历都有一个 iCal 供稿,可以在特定 URL 上查看,通常采用以下形式:

    http://www.google.com/calendar/ical/{OWNER}/public/basic.ics
    

    其中{OWNER} 是日历所有者的 URL 编码电子邮件地址。

    您可以通过查看日历设置并滚动到“日历详细信息”选项卡底部来找到具体的 URL。

    【讨论】:

    • 查尔斯,感谢您的回复。我想知道使用这种方法是否有缺点,例如速率限制或速率配额?我还看到我可以通过简单的 REST 请求获得 JSON 日历提要——但我有同样的问题——它是否在某些方面受到限制?否则,为什么有人会使用 OAuth 技术来获取公共日历中的事件?但这似乎是 Google 记录的唯一方法。
    • 除了他们的官方 API 之外,我找不到任何速率限制的证据。请记住,至少对于 ICS,它是日历上每个事件的完整转储,因此它可能相当笨重。即使没有强制的速率限制,您肯定也不希望经常请求它。
    • 我会将 Charles 的回复标记为答案,因为它会起作用,但我最终在这里使用了 Google V3 REST API:developers.google.com/google-apps/calendar/v3/reference/events/…。该 API 返回 JSON 响应,这些响应很容易在 PHP 中使用 json_decode() 进行解析。并且,可以使用查询参数将查询限制为您感兴趣的日期。正如查尔斯所说,日历地址可以在“设置”下的“日历详细信息”选项卡的底部找到。您还必须设置共享,使其成为一个公共日历才能正常工作。
    • 我得到 "kind": "calendar#event", "etag": "\"B0R-JqZ1uFKvtifdS4AVDz7BCB4/MTM4MDA5MjA0Nzc0ODAwMA\"", "id": "b698e22ed88877f4312afb473b9e9e43b5b2adupdate:" ““开始”:“结束”:“iCalUID”:作为响应。我需要阅读活动标题
    • 在“服务”下code.google.com/apis/console 的 google api 控制台中显示:Courtesy limit: 100,000 requests/day for google calendar api
    【解决方案2】:

    执行此操作的一些提示嵌入在查尔斯回答的 cmets 中。无论如何,截至 2014 年(使用 Google Calendar v3 API),这就是我所做的:
    转到此处查看 v3 API 的工作原理:
    https://developers.google.com/google-apps/calendar/v3/reference/events/list#try-it

    在上述链接中提供的演示网络表单中至少填写以下三个字段:
    calendarId:日历所有者的 URL 编码电子邮件地址。
    timeMax:结束时间timeMin: 开始时间
    (使用此时间格式:2014-05-04T00:00:00-00:00(Y-m-d T 毫秒 - 偏移量))

    您会看到以下请求被发送出去。

    GET https://www.googleapis.com/calendar/v3/calendars/{CALENDER_ID}/events?timeMax={start_time}&timeMin={end_time}&key={YOUR_API_KEY}
    

    现在您可以根据您的要求自定义此请求 URL,并从您的代码发送常规 GET 请求。

    P.S -- 要获取您的 API 密钥,请按照以下步骤操作:
    https://developers.google.com/google-apps/calendar/auth

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多