有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

好的,让我们开始吧

我正在尝试使用JavaJDK14和gradle和ngrok构建一个slack应用程序。(和Slack的SDK模块,螺栓)

到目前为止,我已经能够很容易地包含所需的依赖项,我的问题似乎与依赖项管理没有任何关联。它建立。至少,它可以构建

slack命令配置:

The slack command configuration


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

每次刷新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();
    }
}

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

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

这就是我所在的地方。Slack的文档称,构建Slack应用程序的过程如下:

处理斜杠命令请求所需的所有应用程序包括:

  1. 验证来自Slack的请求

  2. 解析请求主体并检查该命令是否是您需要的命令 喜欢处理

  3. 构建回复消息或执行任何您想执行的操作

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

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


共 (1) 个答案

  1. # 1 楼答案

    我面临着完全相同的问题,这对我来说很有效:

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

    我用了intelliJ。要设置环境变量,请执行以下操作:

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

    不,您不需要实际验证请求等,因为Bolt中间件作为一个内置的Request Verification class为您进行验证

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

    希望这有帮助