Slack 应用程序斜线命令 - 检测到无效签名(401 未经授权)

jse*_*gal 4 java ngrok slack-api slack slack-commands

好的,让我们搭建舞台。

\n

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

\n

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

\n

slack命令配置:

\n

slack命令配置

\n
\n

一些笔记,因为由于某种原因无法整理思绪。

\n

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

\n

我已验证我的 slack 机器人令牌和我的 slack 签名密钥是正确的。

\n

主要程序代码:

\n
package SlackApp;\n\nimport com.slack.api.bolt.App;\nimport com.slack.api.bolt.jetty.SlackAppServer;\n\npublic class Program {\n\n    public static void main(String[] args) throws Exception {\n        App app = new App();\n\n        app.command("/echo", (req, ctx) -> {\n            return ctx.ack(":wave: testing");\n        });\n\n        SlackAppServer server = new SlackAppServer(app);\n        \n        server.start();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
INFO com.slack.api.bolt.middleware.builtin.RequestVerification - Invalid signature detected \n- v0=ee1b7da78a098a8b974c119873b1782c843b8bef1dce192b68ea0df4ccf86b23\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

您的应用程序需要执行的所有操作来处理斜杠命令请求:

\n
    \n
  1. 验证来自 Slack 的请求

    \n
  2. \n
  3. 解析请求正文并检查该命令是否是您\xe2\x80\x99d\n想要处理的命令

    \n
  4. \n
  5. 建立回复消息或做任何你想做的事情

    \n
  6. \n
  7. 使用 200 OK 作为确认响应 Slack API 服务器

    \n
  8. \n
\n

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

\n

Dee*_*nji 5

我面临着完全相同的问题,这对我有用:

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

我用的是intelliJ。设置环境变量:

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

不,您不需要实际验证请求等,因为 Bolt 中间件作为内置请求验证类为您完成此操作

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

希望这可以帮助!