如何将Slack的OAuth2与Java桌面应用程序一起使用

时间:2018-03-07 01:41:30

标签: java oauth-2.0 slack slack-api

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

我遇到了问题,因为它说你在应用程序的重定向uri中获得了访问令牌。但是,由于我正在制作的应用程序不存在于Web浏览器中,无论如何我能做到这一点吗?

我的java应用程序可以启动它可以与之通信的localhost站点以用作重定向uri吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

桌面应用作为内部集成

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

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

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

多个Slack工作区的桌面应用

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

Slack正在使用Oauth 2.0,因此原则上这个较旧的Oauth wiki article的所有标准答案也适用于Slack。

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

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

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

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