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

Google日历推送通知:正确的域验证和注册但无法接收通知

程树
2023-03-14

我面临Google日历推送通知的问题。首先我想解释我的场景。

我正在尝试开发一个java应用程序,以集成到处理传感器和执行器的平台中。此应用程序的目标是使用Google日历API和推送通知来跟踪某种事件。我选择的第一个“架构”如下(鉴于我年轻的开发经验,我愿意接受建议和批评;-):

  1. 一个简单的Tomcat Servlet,它将成为Google服务器的最终webhook(A)

这种结构背后的逻辑(可能不是那么有效)是,谷歌服务器向我的Tomcat webhook发送通知,而Tomcat webhook同时也是我的Socket通道的客户端。当它接收到推送时,它会执行其工作并向套接字服务器发出警告。后者由于有一个静态对象,调用了一个C方法。这个类将使用Google API来检查发生了什么。

首先必须学习的资源是:https://developers.google.com/google-apps/calendar/v3/push

我已经能够完成步骤1:使用网站管理员工具验证您是否拥有该域,并正确添加我的域以进行推送通知,如步骤2:注册您的域中所示。这两个步骤将引出我的第一个问题:

Google是否在这两个步骤中检查列出的域是否具有有效的SSL证书?

我的域名类似于“domain.com”,访问webhook的完整URL是hhttps://ab.domain.com/app/notifications.谷歌文档中有一个非常重要的注释:

请注意,Google日历API将能够向此发送通知

  • 自签名证书。
  • 由不受信任的来源签署的证书。
  • 已被吊销的证书。
  • 具有与目标主机名不匹配的主题的证书。

首先,我已经将Tomcat配置为启用SSL和HTTPS,遵循官方留档:tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html。现在我可以通过https访问tomcat和我的servlet。

问题是我无法“正确”接收推送通知。通过使用浏览器插件模拟Http/Https请求,我可以轻松访问Tomcat webhook,这一插件正确地警告了我的Java应用程序。因此,由于我几乎可以排除套接字通道的问题,所以我将重点放在Google服务器和Tomcat webhook之间的通信上。我使用Wireshark通过8443端口(Tomcat的https)查看来自Google的传入流量。显然是加密的,所以我无法进行大量检查,但许多数据包都标记为PSH(推送)。然而,他们似乎有一个有效载荷,根据谷歌文档,他们不应该这样做,因为推送通知只是带有标题信息的数据包。

所以我的第一个疑问是关于证书。我没有,因此我使用了Verisign.com的试用版(顺便说一句,Tomcat留档中建议启用SSL)

第二个疑问是关于验证和注册程序。尽管我已经设法做到了,谷歌也接受了域名ab.domain.com/app/notifications作为网络钩子,但我没有工具来证明一切都是正确的。

我在Stackoverflow中找到了以下帖子:“无法接收Google日历的消息推送”、“日历消息推送到java应用引擎后端servlet”、“Google日历推送通知监视命令”我已经验证了不同的答案和建议,没有任何变化。

我错过了什么?非常感谢,如有任何提示、提示、答案、指针,我将不胜感激:-)

共有2个答案

陶博涉
2023-03-14

您将需要有效的SSL证书。不允许自签名。

郁光熙
2023-03-14

如果您尝试调试网络钩子,无论是出于机制(即发件人端的正确设置)还是正确性(检查后有效负载),请尝试使用Request estBin。如果可能,请同时注册Request estBinURL以及您的预期目标URL。Request estBin将让您完全了解有效负载是什么,并向您保证您已在发件人(Google)端正确设置了内容。

 类似资料:
  • 我正在使用API explorer和Chrome Advanced Rest Client根据给定的示例观看事件资源。https://developers.google.com/google-apps/calendar/v3/push#watch_request_examples 要求 回应 > 我在google上搜索了这个问题,但找不到太多帮助。 有人能告诉我,请求有什么问题吗?

  • 我看过这个问题。我有完全相同的问题,但我有来自Thawte的有效ssl证书。我只使用id、type和address属性进行了观察请求,如这里所述。我的address属性类似于 我甚至没有收到同步消息。会出什么问题?

  • 我认为通过使用,我可以捕获请求正文,但事实是它什么也没有捕获。如果我理解正确,我应该收到一个结构在这里详细说明的变更资源。是我做错了什么,还是我理解错了?我很感激任何可以给予的洞察力和提前感谢!

  • 我正在尝试使用PHP和V3 api为Google日历设置推送通知。 我拥有Auth2.0权限,可以从我的应用程序在谷歌上创建事件。现在我想知道用户何时对google日历进行任何更改(CRUD操作)。 这是我的代码: 这是输出: 到目前为止,我不知道为什么address返回null,也许这就是问题所在。但我不知道如何修复它。 同时阅读以下内容:#26730263和我自己的代码没有太大区别。 我做了g

  • 我最近为谷歌日历配置了谷歌推送通知。我使用推送通知通知在关注的日历中创建/更新/删除的事件,它工作得非常好,我使用双向同步。 但是,我在此设置中发现了一个小故障。我有一个创建事件的本地应用程序。它与Google日历同步(使用API调用),Google再次将事件通知给我的本地应用程序。这会导致事件重复。 如何区分从以下2种情况收到的推送通知? 案例1:用户在Google日历中创建或其他一些应用程序创

  • 我正在尝试使用parse.com推送通知服务向我的iOS应用添加推送通知,但我遇到了一些问题,我的一些设备没有收到通知。 当前代码 这似乎在某些设备上起作用(在同事的iPhone5上测试过--起作用了,在我老板的iPhone6上测试过--不起作用) 第43行: 警告2: /users/ds/code/rp-ios/rp/appdelegate.swift:44:25:iOS 8.0中不推荐使用“R