Google calendar api 谷歌日历v3推送通知到期

Google calendar api 谷歌日历v3推送通知到期,google-calendar-api,google-oauth,google-apps-marketplace,Google Calendar Api,Google Oauth,Google Apps Marketplace,我正在使用谷歌日历推送通知。一切正常,我注册的频道没有问题。对日历的更改会按预期发出通知 然而,问题是,大约一个小时后,通知就会过期 在阅读文档时,我无法理解为什么会有到期日,因为我没有指定到期日 当频道注册时,响应实际上说明了从我注册频道开始的1周到期日-例如,2014年1月31日星期五03:23:59 GMT 然而,这不是我所经历的 有人知道这里规定的行为是什么吗 谢谢你的帮助 Paul默认情况下,谷歌将频道到期时间保留一周, 如何使用ttl变量将频道到期时间设置为一个月 这里的ttl是以秒

我正在使用谷歌日历推送通知。一切正常,我注册的频道没有问题。对日历的更改会按预期发出通知

然而,问题是,大约一个小时后,通知就会过期

在阅读文档时,我无法理解为什么会有到期日,因为我没有指定到期日

当频道注册时,响应实际上说明了从我注册频道开始的1周到期日-例如,2014年1月31日星期五03:23:59 GMT

然而,这不是我所经历的

有人知道这里规定的行为是什么吗

谢谢你的帮助


Paul

默认情况下,谷歌将频道到期时间保留一周, 如何使用ttl变量将频道到期时间设置为一个月


这里的ttl是以秒为单位的,它使通道到期时间保持10天

我也被日历API中这个明显的错误所困扰。经过两天的测试,我发现了以下问题:

只有当你使用服务帐户观看日历时,这个错误才会显现出来,谷歌应用程序市场应用程序总是这样。我只测试了观看辅助日历,因此无法确认观看主日历时是否存在问题

当您包括params:{ttl:172800}时,您将获得一个通道,并且从现在起2天内设置了过期标头。但是,通知将在1小时后停止发送,这表明频道已被删除,并且Google日历未正确遵守到期时间

如果包含参数:{ttl:172800}并从常规oAuth2流中查看具有正常访问令牌的日历,则将使用指定的过期时间创建通道,并按预期发送通知,直到过期时间。无论你是在看Gmail帐户的日历还是谷歌应用程序帐户的日历,只要你使用普通的OAuth2而不是服务帐户,这都是正确的

我试着使用未登记的

-

而不是

body = { "params": { "ttl" : 172800 }, ....}.  
这就是GoogleAPI Python客户端库所使用的,它没有任何效果。频道创建的过期时间正确,但使用服务帐户时在一小时后过期

这是一个特别糟糕的错误,因为它似乎正确创建了一个通道,但它会提前过期,并且您无法验证特定资源的哪些通道处于活动状态


到目前为止,我找到的唯一解决办法是在一小时后更新每个频道。这不是一个长期的解决办法。我将每天使用超过300000个API调用来保持频道的活跃,这是我配额中的一大块。如果一切正常,我每周最多只需要更新一次频道,而不是一天24次。

此问题现已解决-请参阅以下内容:


谢谢你的帮助,文卡特什-我已经在谷歌开了一张罚单,他们让我设置ttl属性。他们说默认超时时间是1小时——这就是我所经历的。当我像您的示例中那样设置ttl值时,它对超时没有影响。你有什么不同的经历吗?发送watch请求后,回调具有正确的到期时间-但它被忽略,并在1小时后超时。我已更新了答案,您是否尝试了与上述示例相同的方法?上面的代码能够将通道过期时间保持10天,我的json主体是json={id:78,类型:web_hook,地址:,参数:{ttl:864000};在手表注册时,它在响应中返回了正确的到期时间,但在一小时后超时。我也面临同样的问题,在watch注册时,它在响应中返回了正确的到期时间,但频道在到期时间之前不活动,并且在执行任何操作的特定时间后没有从google获得通知Hi Venkatesh-我认为这是通知工作/不工作方式中的一个错误。我有一张谷歌支持的票子,但到目前为止还没有什么有用的报道。是的,我同意你所说的一切。我只使用过服务帐户,并且有同样的行为。我们使用通知通道的原因是为了减少API调用,因此不能刷新所有通道。我假设这是一个bug,因为通知的目的是停止轮询。我正在通过谷歌支持慢慢地解决这个问题。保罗-如果你得到任何关于你的支持请求的更新,如果你也可以在这里发布,那将是非常棒的。我还向企业支持部门提交了一个案例,并将在收到回复后报告-CameronI也在Apps API的公共问题跟踪程序上提交了这个bug。我已将您的问题与我的支持请求联系起来-感谢您设置此链接。目前,我被要求提供日志详细信息等,所以没有什么要报告的,但如果有任何变化,我会更新这个线程。我已经收到谷歌的回复,他们已经承认这是现在
服务帐户的一个已知问题。他们今天增加了以下已知问题。我在谷歌的支持下完成了这项工作,这是一个众所周知的服务帐户问题。不是好消息,但解决办法是每1小时重新创建一个频道。。。[连结]
body = { "expiration" : MILLISECONDS_SINCE_EPOCH, ....}.
body = { "params": { "ttl" : 172800 }, ....}.