Google Workspace Add-on无法获取传递的token及authorizationEventObject
按以下优先级逐一排查即可:
- 校验事件类型匹配
只有eventType字段值为authorizationEvent的请求负载中才会携带authorizationEventObject对象,普通主页加载、上下文触发(Gmail/日历内容触发)的请求本身不包含该字段,不要在非授权事件的回调逻辑里读取该对象。 - 校验插件触发器配置
进入Google Workspace SDK配置页、插件部署配置页,确认已显式注册授权事件触发器,且授权事件回调地址配置正确。未注册对应触发器时,Google侧不会在请求中注入该对象,读取结果必然为undefined。 - 校验后端请求解析逻辑
Google会将完整事件对象放在POST请求的JSON格式请求体中传递,不会放在query参数、路径参数、请求头里:- 如果使用Express等Web框架,必须提前开启JSON请求体解析中间件,否则无法正确读取请求体内容
- 排查阶段先打印完整原始请求体到日志,确认请求来源是Google官方触发的真实事件,不要用自定义构造的模拟请求直接测试
- 不要做深层字段的链式读取,先判断上层字段存在再读取子字段,避免因上层字段缺失抛出undefined错误
- 校验端点拦截规则
确认你的服务端点没有开启请求拦截(比如强制要求携带自定义鉴权头、跨域拦截),Google发起授权事件请求时不会携带你自定义的鉴权凭证,拦截后你拿到的是拦截器返回的默认空响应,自然读不到目标对象。
正确的事件读取参考代码(Node.js/Express):
const express = require('express') const app = express() // 必须配置JSON请求体解析 app.use(express.json()) app.post('/addon/callback', (req, res) => { const eventPayload = req.body // 先匹配事件类型 if (eventPayload.eventType === 'authorizationEvent') { // 此时读取授权事件对象 const authEvent = eventPayload.authorizationEventObject const userIdToken = authEvent.userIdToken // 后续token校验、授权流程逻辑 } // 其他事件类型走对应处理逻辑 }) app.listen(3000)
内容的提问来源于stack exchange,提问作者Asken
相关产品推荐
相关产品推荐

