如何将 Slack 的 OAuth2 与 Java 桌面应用程序结合使用

Luc*_*rro 5 java oauth-2.0 slack-api slack

有没有办法使用 OAuth2 通过 Slack 验证 java 桌面应用程序?我正在尝试遵循Slack 的指南

我陷入困境,因为它说您在应用程序的重定向 uri 内获取访问令牌。但由于我正在制作的应用程序不存在于网络浏览器中,我是否可以做到这一点?

我的 java 应用程序可以启动一个可以与其通信以用作重定向 uri 的本地主机站点吗?如果是这样,怎么办?

Eri*_*ken 2

作为内部集成的桌面应用程序

在我们了解更多详细信息之前,请注意,如果您打算仅将桌面应用程序用于您自己的 Slack 工作区,则有一个简单的解决方案。在这种情况下,您的应用程序不需要支持完整的 Oauth 工作流程,您有两个选择:

  • 通过 Slack 应用程序的管理页面将您的应用程序安装为内部集成,然后将令牌复制并粘贴到您的桌面应用程序
  • 为您的 Slack 工作区创建旧令牌,然后复制并粘贴到您的办公桌上(不推荐)

我还想预先澄清一下,您的应用程序只需运行一次 Oauth 进程即可将其安装到新的 Slack 工作区中。生成的令牌没有过期日期,并且无需刷新。

适用于多个 Slack 工作区的桌面应用程序

如果您计划将桌面应用程序分发到多个 Slack 工作区,您将需要支持完整的 Oauth 安装过程。

Slack 使用的是 Oauth 2.0,因此原则上这篇旧Oauth wiki 文章中的所有标准答案也应该适用于 Slack。

但是,由于您不能假设用户的本地计算机可以从 Internet 访问(例如,重定向回本地 Web 服务器将不起作用,因为 Slack 很可能无法访问它),因此您将需要一个 Web在 Web 服务器上运行并可通过 Internet 访问的帮助程序应用程序。

这个 Web 助手应用程序基本上是一个小型网站,它执行完整的 Oauth 舞蹈,将安装过程安装到新的 Slack 工作区中。您的应用程序可以打开浏览器窗口并重定向到 Web 帮助程序应用程序以启动登录过程。然后,您可以使用两种基本方法来处理返回桌面应用程序的连接:

  • 向用户显示生成的令牌并要求他将其复制并粘贴到您的桌面应用程序(简单方法)
  • 将生成的令牌存储在您的 Web 帮助程序应用程序中,并向您的桌面应用程序提供 API 以自动获取它。(用户友好的方法)

如果您正在寻找此类 Web 帮助器应用程序的起点,请查看此用于安装 Slack 应用程序的示例 PHP 脚本。