Google Calendar API events/watch请求体type字段可选值咨询
我太懂这种找不到关键参数的烦躁了——Google Calendar的events.watch文档确实做得有点“偷懒”,把通用字段的说明藏起来了,还没API探索器帮着验证,确实头疼。我之前调试这个推送功能的时候也踩过同样的坑,给你理清楚:
1. type字段的可选值
这个字段其实属于Google API通用的Channel资源结构,Calendar的watch接口直接复用了这个通用定义。目前type只有一个有效可选值:
web_hook:这是唯一支持的交付机制,用来把日历事件的变更通知推送到你指定的网络端点。
之所以Calendar文档里没列,是因为这类通用参数的定义都统一放在Google的推送通知通用规范里,而不是每个API单独写一遍。
2. address属性的确认
你的推测完全正确!address就是接收推送通知的HTTPS URL端点(划重点:必须是HTTPS,HTTP不被Google认可)。这个端点得能处理Google发过来的POST请求,而且在调用watch接口时,Google会先发送一个验证请求,你得确保端点能返回200 OK响应,不然订阅会失败。
3. 你可能遗漏的文档部分
Calendar的watch功能是基于Google的通用推送通知框架搭建的,所有和Channel相关的通用字段(比如type、address、token、expiration这些)的详细说明,都在这个框架的通用文档里,而不是Calendar单独的events.watch页面里。你可以去搜Google API的“推送通知”通用文档,里面有完整的Channel资源字段定义、验证流程、错误排查等细节,比Calendar的接口页详细多了。
另外提个调试小技巧:如果你的端点是本地开发环境,记得用ngrok这类工具做内网穿透,让Google能访问到;还有要确保你的OAuth权限里包含calendar.events.readonly或者更高的权限,不然订阅会被拒绝。
内容的提问来源于stack exchange,提问作者theMikeSwan

