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

通过我的谷歌应用程序脚本设置谷歌日历V3 API推送通知

琴俊良
2023-03-14
  1. 我想使用Google CAL API v3来观看多个日历,从而将这些日历中的所有事件更新到主日历,因此我需要使用WATCH/PUSH通知,以便每当有新事件在这些cal中,这些事件将自动在我的主日历中推送/创建。
  2. 但是,我面临以下问题:在API资源管理器下。大多数服务返回200 OK,除了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 webmaster工具中验证了我的域/通知。我经过验证的域如下所示:

http://my-domain.com/notifications

并在推送式谷歌开发者控制台下的webhooks中添加了我的域名,如文档中所述。

我这里有什么遗漏吗,请注意我的域的SSL证书是否有问题,我如何至少在API资源管理器中进行测试,以便我获得返回代码200 OK。之后,我需要通过Google Apps Script实现此推送/WATCH。

是否有用于应用程序脚本使用推送通知的文档。

任何提示,提示将帮助我,我厌倦了这个在过去1周的试错方法。

共有1个答案

冷正信
2023-03-14

在您发布的请求中,正文是空的。在留档中有一个示例,您需要提供日历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.
  }

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

要使用apps脚本,可以将URLfetch服务与方法“fetch()”一起使用,然后需要提供提及的参数,并以POST的形式进行调用。

希望这有帮助。

更新:我会在这里写更多的空间。

推送通知以这种方式工作。-您使用id、要观看的资源、要接收通知的地址和可选参数创建消息推送。

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

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

针对您的问题1。-由于服务器将向url(您的web\u挂钩地址)发出HTTP请求,所以Google要求它是安全的,这就是为什么要求它是HTTPS。

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

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

-那是你自己创造的。文件中指出了对此的建议。

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

您可以在此处查看推送通知的工作原理,此示例适用于Drive,但概念相同。

 类似资料:
  • 我想使用谷歌应用程序脚本更新谷歌电子表格,并在我拥有的一系列日历发生更改时使用Gmail API发送电子邮件。 Google日历推送通知是否可以与Google App Script一起使用,或者是否需要其他某种平台? 我愿意学习任何必要的东西。我知道需要一个域名来接收通知。 我感谢你的帮助!

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

  • 我一直在研究如何将((谷歌推送通知))与PHP结合使用,但没有太多的工作示例/文档。。。 我正试图让它在一个内部网络上工作,这个网络不是通过HTTP对外开放的。 我能够从我们的外向型域通过HTTPS实现这一点,但内部尝试在Chrome控制台中告诉我,“API可能不再从不安全的来源使用”,我发现这意味着它需要HTTPS。 有人知道这方面可能的解决方法吗?欺骗HTTPS,或者允许它通过HTTP继续?我

  • 我想写一个小脚本,告诉Firebase消息推送,如果满足一定条件。如何使用谷歌应用程序脚本从Firebase发送消息推送?

  • 我在我的应用程序中使用Google日历API。 我面临的问题是谷歌没有给我发送推送通知。 我在这里设置我的应用程序https://console.developers.google.com/ 已验证域名:https://console.developers.google.com/apis/credentials/domainverification 观看日历:https://developers.

  • 目前,我们正在开发一个处理谷歌日历的iPhone应用程序。需要将日历事件同步到服务器端。一切都很好。 但是对于推送通知,我们遵循这个过程 带参数 在标题中,我们正在发送 和内容类型:json 这里有人能帮我们解决这个问题吗?