java - 如何在 Java 桌面应用程序中使用 Slack 的 OAuth2

标签 java oauth-2.0 slack slack-api

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

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

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

最佳答案

作为内部集成的桌面应用

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

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

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

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

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

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

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

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

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

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

关于java - 如何在 Java 桌面应用程序中使用 Slack 的 OAuth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142803/

相关文章:

slack - 无法使用 API 从 Slack channel 中删除用户

java - 传递带有异常的枚举 - Java

c# - 读取 DTD 或 Schema 并列出给定元素的所有有效子元素或属性

azure - Microsoft Azure OAuth 客户端凭据 token 获得 "AuthorizationFailed"响应

Azure OAuth2和离谱的价格: Do all users need to be in Active Directory at $6/month/user?

android - 使用 Azure AD 验证内部单租户移动应用程序的正确 OAuth 流程

java - 打开新浏览器选项卡时的 SessionAttributes

java - 当按下键盘上的某个键时,如何更改按钮的外观。 JavaFX

python - Slack RTM 与 python-rtmbot : making short-links work

javascript - 如何避免重复用户被 Slack 中的机器人提及?