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

Posted

技术标签:

【中文标题】如何从服务器使用 Slack API 进行身份验证【英文标题】:How to authenticate with Slack API from server 【发布时间】:2018-07-12 07:14:35 【问题描述】:

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

/shoutout [@recipient with message]

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

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

【问题讨论】:

【参考方案1】:

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

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

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

    您需要创建一个 Slack 应用来获取客户端 ID 和客户端密码

    在应用的管理页面上激活 Slack 应用的分发

    创建一个处理 Oauth 流程的网页

这里是 Slack 的 Oauth flow 的更详细说明。

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

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

【讨论】:

以上是关于如何从服务器使用 Slack API 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有客户端身份验证的情况下从服务器验证 Firebase 用户?

如何从 android 客户端进行经过身份验证的 django rest api 调用?

如何使用 Web API 来对 MVC 应用程序进行身份验证

如何使用 Web API 来对 MVC 应用程序进行身份验证

如何在 laravel 中进行前端 api 身份验证

在 Django 2.0 中使用 Slack RTM API