微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Slack App Slash命令-检测到无效签名未经授权的401

好,让我们做好准备。

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

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

slack命令配置:

The slack command configuration


一些注释,因为由于某种原因我无法整理思想。

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

我已验证我的松弛bot令牌和松弛签名秘密是正确的。

主程序代码

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();
    }
}

由于某种原因,每当我在开发工作区中使用slash命令时(我尚未开始对多个工作区进行oAuth,我只是在测试东西),记录器都会显示此信息(我已经用Google搜索过,但没有找到任何合适的解决方案):

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

这是我的位置。 Slack的文档说,构建Slack应用程序的过程如下:

您的应用程序要处理斜线命令请求,需要做的所有事情是:

  1. 验证来自Slack的请求

  2. 解析请求正文,并检查命令是否为您要使用的命令 喜欢处理

  3. 构建回复消息或做任何您想做的事

  4. 以200 OK的确认响应Slack API服务器

我实际上不是在验证是否有空闲请求,但是如果我只是在玩耍,我认为没有必要这样做。你能提供一些见识吗?

解决方法

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

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

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

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

不,您不需要实际验证请求等,因为 Bolt Middleware 作为内置 Request Verification class

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

希望这会有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。