如何从服务器使用 Slack API 进行身份验证

How to authenticate with Slack API from server

我正在构建一个如下所示的 Slack 斜杠命令

/shoutout [@recipient with message]

这将触发 POST 到我的服务器,同时包含发件人和收件人的用户 ID。但是,我需要他们的全名。我想向 Slack API 发送请求以获取他们的名字,这似乎可以通过使用用户 ID 将 GET 发送到 https://slack.com/api/users.info 来实现。

我在理解如何执行此操作时遇到的问题与令牌要求有关。我知道如何使用我的工作区执行此操作(只需将我的工作区的 OAuth 令牌作为请求的一部分发送),但这如何与安装我的应用程序的其他工作区一起使用?换句话说,如何为安装我的应用程序的其他工作区获取有效的 OAuth 令牌?我是不是处理错了?

你走在正确的道路上。对于您的应用程序应该运行的每个 Slack 工作区,您确实需要一个单独的令牌。

要获取它,您的应用程序必须安装到每个工作区一次,并且您的应用程序需要捕获并存储将在安装过程中创建的令牌。安装过程是标准的 Oauth2.0 流程,通常由外部网站管理,该网站与工作空间的 Slack 协商 OAuth 流程。该网页通常有一个 "Add to Slack" 按钮,它将开始安装过程。

要做到这一点,您需要执行以下操作:

  1. 您需要创建一个 Slack 应用程序以获取客户端 ID 和客户端密码

  2. 在应用程序的管理页面上激活 Slack 应用程序的分发

  3. 创建处理 Oauth 流程的网页

这里是对 Slack 的 Oauth flow 更详细的描述。

这里是关于 Slack Button 的更多详细信息。

最后,这是一个 example PHP script 用于将 Slack 应用程序安装到工作区的方法。