如何在Slack Event API请求中传递授权令牌至Google Apps Script Web App
问题:如何让Slack Event API向Google Apps Script Web App传递授权令牌?
我正尝试将Slack Event API的请求与Google Apps Script Web App对接,已部署一个包含doPost()方法的极简Web App。但公司政策不允许将该Web App设置为“任何人可访问”,需在请求头中传递授权令牌。我已生成令牌并通过Google OAuth 2.0 playground验证可用,现询问是否可通过Slack Event API传递该令牌。
回答
- 可以实现令牌传递,具体分两种路径操作:
- 通过Slack Workflow Builder(推荐方案):
Slack的Workflow Builder支持自定义HTTP请求动作,你可以在该动作的配置中直接添加自定义请求头,填入你的授权令牌格式(比如Authorization: Bearer <你的令牌>),再将请求目标设置为你的Google Apps Script Web App地址。这种方式无需额外搭建服务,操作更直接。 - 原生Slack Event API的处理方案:
目前Slack原生Event API的事件订阅配置里,没有提供直接添加自定义请求头的选项。如果必须依赖原生Event API触发,你需要搭建一个轻量中间代理服务(比如Node.js或Python的简单服务),让Slack先把事件发送到代理服务,再由代理服务在请求头中补全授权令牌后转发到你的GAS Web App。 - Google Apps Script端的验证逻辑:
无论采用哪种传递方式,都需要在doPost()方法中验证令牌有效性,示例代码如下:function doPost(e) { // 从请求头中提取授权令牌 const authToken = e.headers?.Authorization; const expectedToken = "你的有效授权令牌"; // 验证令牌合法性 if (!authToken || authToken !== `Bearer ${expectedToken}`) { return ContentService.createTextOutput("Unauthorized").setStatusCode(401); } // 处理Slack事件的业务逻辑 return ContentService.createTextOutput("Event processed successfully").setStatusCode(200); }
- 通过Slack Workflow Builder(推荐方案):
内容的提问来源于stack exchange,提问作者gris_martin
相关产品推荐
相关产品推荐

