Slack App Slash 命令 - 检测到无效签名(401 未经授权)

Posted

技术标签:

【中文标题】Slack App Slash 命令 - 检测到无效签名(401 未经授权)【英文标题】:Slack App Slash Command - Invalid Signature Detected (401 Unauthorized) 【发布时间】:2021-01-27 22:53:09 【问题描述】:

好的,让我们开始吧。

我正在尝试使用带有 gradle 和 ngrok 的 Java JDK 14 构建一个 slack 应用程序。 (和 Slack 的 SDK 模块,Bolt)

到目前为止,我已经能够非常轻松地包含所需的依赖项,而且我的问题似乎与我的依赖项管理无关。它建立。至少,它会构建。

slack 命令配置:


一些笔记,因为由于某种原因我无法整理我的想法。

我确保每次刷新 ngrok 时都会更改请求 URL。

我已验证我的 slack bot 令牌和我的 slack 签名密码是正确的。

主程序代码:

package SlackApp;

import com.slack.api.bolt.App;
import com.slack.api.bolt.jetty.SlackAppServer;

public class Program 

    public static void main(String[] args) throws Exception 
        App app = new App();

        app.command("/echo", (req, ctx) -> 
            return ctx.ack(":wave: testing");
        );

        SlackAppServer server = new SlackAppServer(app);
        
        server.start();
    

出于某种原因,每当我在我的开发工作区中使用斜杠命令时(我还没有开始为多个工作区执行 oAuth,我只是在测试一些东西),记录器会显示此信息(我已经用谷歌搜索过并且没有找到任何合适的解决方案):

INFO com.slack.api.bolt.middleware.builtin.RequestVerification - Invalid signature detected 
- v0=ee1b7da78a098a8b974c119873b1782c843b8bef1dce192b68ea0df4ccf86b23

这就是我所在的地方。 Slack 的文档说构建一个 slack 应用程序的过程如下:

您的应用处理斜杠命令请求所需要做的就是:

    验证来自 Slack 的请求

    解析请求正文并检查命令是否是您想要的 喜欢处理

    建立回复消息或做任何你想做的事

    以 200 OK 作为确认响应 Slack API 服务器

我实际上并没有验证来自 slack 的请求,但如果我只是在玩玩,我认为没有必要这样做。你能提供一些见解吗?

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题,这对我有用:

如果您在 IDE 中运行项目,则必须弄清楚如何在 IDE 中设置运行时环境变量。

我使用了 IntelliJ。设置环境变量:

    从主菜单中,选择运行 |编辑配置或选择编辑 来自运行/调试配置选择器的配置 工具栏。 从主菜单中,选择运行 |编辑配置或选择编辑 来自运行/调试配置选择器的配置 工具栏。 在“运行/调试配置”对话框中,选择一个配置,其中 您要添加环境变量。键入变量名称和值:=。 如果要添加多个变量,它们应该用分号分隔。在这种情况下,它将是 SLACK_BOT_TOKEN=xoxb.....;SLACK_SIGNING_SECRET=xxxxx

不,您不需要实际验证请求等,因为 Bolt 中间件作为内置 Request Verification class 为您完成了这项工作@

您的应用无需手动返回任何响应,一切都由 Bolt 自己处理。 只需设置 Env 变量就足够了!

希望这会有所帮助!

【讨论】:

以上是关于Slack App Slash 命令 - 检测到无效签名(401 未经授权)的主要内容,如果未能解决你的问题,请参考以下文章

Discord Slash 命令机器人 - Python 结构 [关闭]

我们可以使用“WinAppDriver”自动化Slack和Trello窗口存储应用程序吗?

通过Slack API发送命令

带有本地 Web 服务的 Slack 斜杠命令

Slack 斜杠命令 - 显示用户输入的文本?

sh Slack的简单和愚蠢的Nagios命令。