使用Google Calendar API Events watch时Webhook返回异常内容求助
问题描述
我通过Google Calendar API的Events watch接口创建了Webhook订阅,用来跟踪特定日历的事件更新。订阅创建成功,当该日历的事件进行创建/更新/删除操作时,Webhook确实会被触发,但Webhook的请求体内容却是:
{"value": "IMTBuffer(0, binary, da39a3ee5e6b4b0d3255bfef95601890afd80709): "}
想请教这是什么情况?
补充说明:该日历不属于我,但我被设置为日历编辑者,它显示在我的日历列表中,我也能通过Calendar API的Events:list接口查询到该日历的事件。
创建Watch事件的请求如下:
POST https://www.googleapis.com/calendar/v3/calendars/name@domain.co.uk/events/watch
请求体:
{ "id": "{randomUUID}", "type": "web_hook", "address": "https://hook.eu1.make.com/{idremoved}", "params": { "ttl": "2592000" } }
响应状态码200,响应内容:
{ "kind": "api#channel", "id": "{UUID as above}", "resourceId": "{IDremoved}", "resourceUri": "https://www.googleapis.com/calendar/v3/calendars/name@domain.co.uk/events?alt=json&eventTypes=default", "expiration": "1720169269000" }
原因分析与解决方案
这个IMTBuffer内容是Make(原Integromat)平台处理Webhook请求时的内部格式问题,并非Google Calendar API返回的原始内容:
- Google Calendar的Webhook触发时,实际会发送包含
channelId、resourceId、resourceUri等关键信息的JSON请求体,不会返回这种Buffer格式内容。 - 你使用的
https://hook.eu1.make.com/是Make的Webhook端点,平台在接收原始请求时,可能因为二进制解析、编码处理逻辑,把空请求体(或未正确解析的内容)包装成了IMTBuffer格式。
解决步骤:
- 检查Make的Webhook配置:确认你的Make Webhook模块是否设置了正确的请求体解析方式,比如选择
JSON格式解析,而非二进制或原始格式。 - 验证原始请求:可以临时替换Webhook地址为本地调试工具(如ngrok配合本地服务),直接接收Google发送的原始请求,确认请求体是否正常。如果原始请求内容正确,说明问题完全出在Make的处理逻辑上。
- 重新创建订阅:虽然当前订阅返回状态正常,但可以重新创建一次Watch订阅,确保
resourceId和expiration等参数正常,排除订阅本身的异常。
另外,Google Calendar的Webhook偶尔会发送空请求体作为“心跳”验证,但这种情况不会伴随IMTBuffer格式,所以核心问题还是在Make的请求解析环节。
内容的提问来源于stack exchange,提问作者user1507412
相关产品推荐
相关产品推荐

