代码之家  ›  专栏  ›  技术社区  ›  Luca Guarro

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

  •  3
  • Luca Guarro  · 技术社区  · 7 年前

    有没有办法使用OAuth2通过Slack对java桌面应用程序进行身份验证?我正在努力跟随 Slack's guide .

    我被卡住了,因为它说您在应用程序的重定向uri中获得了访问令牌。但是,由于我正在制作的应用程序不存在于web浏览器中,那么我还能这样做吗?

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Erik Kalkoken    7 年前

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

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

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

    我还想预先澄清一下,您的应用程序只需运行一次Oauth进程,即可将其安装到新的Slack工作区中。生成的令牌没有过期日期,因此不必重新格式化。

    用于多个空闲工作区的桌面应用程序

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

    Slack使用的是Oauth 2.0,因此原则上所有标准答案 Oauth wiki article 也应适用于松弛。

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

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

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

    如果您正在寻找此类web helper应用程序的起点,请查看以下内容 example PHP script 用于安装Slack应用程序。