【问题标题】:How to use Slack's OAuth2 with a Java desktop application如何在 Java 桌面应用程序中使用 Slack 的 OAuth2
【发布时间】:2018-03-07 01:41:30
【问题描述】:

有没有办法使用 OAuth2 通过 Slack 对 Java 桌面应用程序进行身份验证?我正在尝试关注Slack's guide。

我被卡住了,因为它说您在应用程序的重定向 uri 中获取了访问令牌。但是由于我正在制作的应用程序不存在于网络浏览器中,所以无论如何我可以做到这一点吗?

我的 java 应用程序能否启动一个可以与之通信的 localhost 站点以用作重定向 uri?如果有,怎么做?

【问题讨论】:

标签: java oauth-2.0 slack slack-api


【解决方案1】:

桌面应用作为内部集成

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

  • 通过管理页面将您的应用程序安装为internal integration 您的 Slack 应用程序,然后将令牌复制并粘贴到您的桌面应用程序
  • 为您的 Slack 工作区创建一个 legacy token,然后复制并粘贴到您的办公桌(不推荐)

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

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

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

Slack 使用的是 Oauth 2.0,因此原则上来自旧版 Oauth wiki article 的所有标准答案也适用于 Slack。

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

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

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

如果您正在寻找此类网络帮助应用程序的起点,请查看此example PHP script 以安装 Slack 应用程序。

【讨论】:

  • 当您说 OAuth 流程只需要运行一次时,这仅仅是作为内部集成的桌面应用程序还是用于多个 Slack 工作区的桌面应用程序?
  • 每个 Slack 工作区一次。 Oauth 过程用于将 Slack 应用程序安装到 Slack 工作区,通常只需执行一次。 (除非权限发生变化,否则您需要将其重新安装到 Slack 工作区)
猜你喜欢
  • 2016-09-30
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多