You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Calendar事件推送通知回调中识别操作用户?

解决Google Calendar资源日历Webhook无法获取操作用户信息的问题

问题描述

我正在搭建预订系统与Google Calendar及Google资源的双向同步机制,通过在特定Google资源日历上创建Webhook通道,监听事件的创建、更新和删除操作。目前通知机制运行正常——用户创建事件时,后端能收到Google Push Notification,也能获取对应的会议室完成预订,但无法识别执行操作的用户,Push Notification的回调数据里没有任何用户相关信息。

回调通知的请求头数据如下:

Host: f73b-98-14-18-68.eu.ngrok.io
User-Agent: APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)
Content-Length: 0
Accept: */*
Accept-Encoding: gzip, deflate, br
X-Forwarded-For: 74.125.210.217
X-Forwarded-Proto: https
X-Goog-Channel-Expiration: Thu, 02 Mar 2023 06:34:05 GMT
X-Goog-Channel-Id: 12345678904
X-Goog-Message-Number: 6863357
X-Goog-Resource-Id: szg7mO63iJ_3oMLRGXyv7868CQQ
X-Goog-Resource-State: exists
X-Goog-Resource-Uri: https://www.googleapis.com/calendar/v3/calendars/c_1887qe9rpoms8hdanb029mmhoiira%40resource.calendar.google.com/events?alt=json

解决方案

Google Push Notification本身不会携带事件详情和用户信息,这是设计上的限制(为了精简通知数据),要获取操作用户信息,必须通过以下步骤:

  • 利用回调中的资源URI拉取完整事件数据
    收到通知后,使用X-Goog-Resource-Uri提供的链接,调用Google Calendar API获取该资源日历下的事件列表。返回的事件对象中:

    • creator字段包含事件创建者的邮箱、显示名等信息
    • lastModifiedBy字段记录了最后修改该事件的用户信息
      注意:调用API需要持有对应权限(如https://www.googleapis.com/auth/calendar.readonly),且要确保服务账号已被授权访问目标资源日历。
  • 优化事件定位效率
    为了避免拉取大量无关事件,可以在API请求中添加时间范围过滤参数(比如updatedMin),只拉取通知时间点之后更新的事件;也可以对比本地存储的事件更新时间,快速定位出发生变更的目标事件,减少数据处理量。

  • 确认权限配置
    要确保你的服务账号在Google Workspace后台已被授予访问该资源日历的权限——可以将资源日历直接共享给服务账号,或者通过管理员分配对应的日历访问权限,否则API拉取会返回权限错误。

参考文档(中文翻译)

  • Google Calendar 事件监听API
  • 接收通知

内容的提问来源于stack exchange,提问作者Benjamin Geoffrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:57:21