通过我的Google Apps脚本设置Google Calendar V3 API推送通知

时间:2015-05-20 05:41:08

标签: google-apps-script push-notification google-api google-calendar-api

  1. 我想使用Google CAL API v3观看多个日历,从而将这些日历中的所有事件更新为主日历,因此我需要使用 WATCH / PUSH通知以便只要这些cal中有新事件,就会在我的主日历中自动推送/创建这些事件。
  2. 但是,我面临以下问题:在API Explorer 下。除观看请求无效外,服务的大部分都会返回200 OK
  3.   

    服务> Calendar API v3> calendar.events.watch

    我收到了以下请求和回复

    请求

    POST https://www.googleapis.com/calendar/v3/calendars/mailid%40domain.com/events/watch?key={YOUR_API_KEY}
    {
    }
    

    响应

    400 OK
     {
    "error": {
     "errors": [
      {
       "domain": "global",
       "reason": "required",
       "message": "entity.resource"
      }
     ],
     "code": 400,
     "message": "entity.resource"
    }
    }
    

    然后我按照下面的谷歌文档进行了跟踪 https://developers.google.com/google-apps/calendar/v3/push

    注册您的域名

    第1步:确认您拥有域名

    第2步:注册您的域名

    我在Google网站管理员工具中验证了我的域名/通知。 我验证的域名如下所示:

      

    http://my-domain.com/notifications

    并在 Google Developer Console 中的 PUSH 下的webhook中添加了我的域名,如doc中所述。

    我在这里缺少什么,plz在我的域名SSL证书中存在问题,我怎么能在API资源管理器中进行至少测试,以便我得到返回代码200 OK。之后,我需要通过Google Apps脚本实现推送/观看

    是否有任何应用程序脚本文档可以使用推送通知。

    任何提示,小费都会对我有所帮助,过去1周我在试错法中对此感到厌倦。

1 个答案:

答案 0 :(得分:0)

在您发布正文的请求中为空。在文档中有一个示例,您需要提供日历ID,web_hook和其他信息:

{
  "id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
  "type": "web_hook",
  "address": "https://example.com/notifications", // Your receiving URL.
  ...
  "token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
  "expiration": 1426325213000 // (Optional) Your requested channel expiration time.
  }

创建推送通知时添加此信息。

对于使用应用程序脚本,您可以使用“fetch()”方法使用URLfetch服务,然后您需要提供参数提及并将调用作为POST。

希望这有帮助。

更新:我会写在这里以获得更多空间。

推送通知以这种方式工作。 - 您可以使用ID,要监视的资源,要接收通知的地址以及可选参数创建推送通知。

- 如果成功,服务器将监视该资源,并将向请求中提到的地址发送通知,描述对资源进行更改时的更改。

- 服务器需要知道您收到了通知,所以从#1中提到的地址开始,您需要告诉服务器您收到了返回HTTP 200响应的通知。 (为此你需要一个正在收听通知并发送回复的应用程序)

您的问题 1.-由于服务器会向网址发送HTTP请求(您的web_hook地址),因此Google要求它是安全的,这就是为什么它必须是HTTPS。

2.-是的,如果没有该网址,您将无法收到通知。

3.- Google还需要验证您提供的网址实际上是您的网址,因此您需要提供网址,然后Google会为您提供一个文件,您必须在该网址中提供此文件,然后Google将调用url将检索该文件。然后你可以证明这个URL是你的。我不确定这个步骤是否可以通过应用程序脚本完成。您实际上可以将脚本部署为Web应用程序,但我不确定您是否可以将其用于此目的。(here您可以找到更多信息以及验证URL的不同方法)

4.-那是你自己创造的。在文档中指出了它的建议。

我希望这能澄清你的问题。

您可以在此处查看push notifications的工作原理,此示例适用于云端硬盘,但概念相同。