检测到java Slack App Slash命令无效签名(401未经授权)
好的,让我们开始吧
我正在尝试使用JavaJDK14和gradle和ngrok构建一个slack应用程序。(和Slack的SDK模块,螺栓)
到目前为止,我已经能够很容易地包含所需的依赖项,我的问题似乎与依赖项管理没有任何关联。它建立。至少,它可以构建
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();
}
}
出于某种原因,每当我在我的开发工作区中使用slash命令时(我还没有开始对多个工作区执行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。要设置环境变量,请执行以下操作:
不,您不需要实际验证请求等,因为Bolt中间件作为一个内置的Request Verification class为您进行验证
你的应用程序不需要手动返回任何响应,一切都由Bolt自己处理。 只要设置Env变量就足够了
希望这有帮助