【问题标题】:How to set up authorization with OAuth in SlackAPP for new users?如何在 SlackAPP 中为新用户设置 OAuth 授权?
【发布时间】:2019-04-21 15:30:39
【问题描述】:

我有一个基于 c# 的程序,它可以通过我的 SlackApp 将消息和文件发送到我们的 SlackWorkspace(我使用 HttpClient 与 Slack 通信)。

现在,为了在我的工作区中分发这个程序,并让每个用户都有自己的身份,它说我必须使用 OAuth 并为每个用户创建特定的验证令牌。 它在 Slack 文档中说我必须使用重定向 URL(根据 docs)到我自己的服务器。

我们有一台服务器,我可能会使用它。但我以前从未做过这样的事情,我不清楚我必须从我们的服务器提供什么“答案”。我认为验证过程将由 Slack 处理。

有人知道如何解决这个问题吗?

在任何人问之前 - 是的,我们需要为每个人安装它并让他们可以识别为他们自己。我们不能以用户身份使用“SlackApp”。 :)

我将非常感谢代码示例(在 c# 中)和对整个重定向事情如何工作的解释。

【问题讨论】:

    标签: c# oauth-2.0 slack-api


    【解决方案1】:

    Slack 使用标准的Oauth 2.0 协议对应用进行身份验证,类似于 Google 和 Facebook。

    因此,“验证过程”确实主要由 Slack 处理(如 here 所述),但您的 Slack 应用程序需要启动它并正确处理响应。它也是一个多步骤的过程,包括用户必须使用他们的凭据登录到 Slack。这就是为什么您需要一个网络应用来处理整个过程。

    要让 Slack 应用通过 Oauth 生成令牌,需要一个网络应用:

    • 可以通过 Internet 访问
    • 能够像 Web 服务器一样处理 HTTP 请求
    • 为新生成的令牌提供持久存储

    这可能使用ASP.NET Web Pages 更容易实现,它可以利用现有网络服务器的许多功能。

    但是对于这个答案,让我们看一下 .NET Core 中的实现。为此,我们需要创建自己的 Web 服务器和一些基本的会话处理。主要概念包括:

    细节有点超出了一个答案的范围。但我很高兴在 GitHubGist 上分享一个工作示例实现。

    顺便说一句:对于此类 Web 应用程序的本地开发,建议使用像 ngrok 这样的 VPN 隧道,它允许将本地计算机安全地暴露给 Internet 和 Slack。

    【讨论】:

    • 感谢 GitHub 上的示例。我现在正在查看它,并试图弄清楚这一切是如何运作的。这是很多代码,有所有新的东西供我学习和弄清楚。多么艰巨的任务,我的老板在那里给了我 :D 谢谢你的好先生,你帮了大忙!
    • 好的,第一个问题出现了。为什么要使用 VPN 隧道?这是否意味着所有其他用户都必须成为该 VPN 的一部分才能访问服务器? SLACK_REDIRECT_URL 是您还给您的 SlackAPP 的那个吗? URL-PREFIX 是干什么用的?此外,我不能只是“想出”我想要的任何 URL,对吧?必须以某种方式在某处注册 URL - 还是我完全错了?似乎我仍然无法完全掌握服务器、URL 的概念以及它们是如何工作的......
    • 我的开发只使用VPN隧道。因为它使我能够让应用程序在我的本地 PC 上运行,而 Slack 仍然可以连接到它。应用程序完成后,它应该在可以从 Internet 访问的服务器上运行。
    • 是的,SLACK_REDIRECT URL 与您在管理页面上为 Slack 应用程序定义的 URL 相同。在客户端 ID 和客户端密码旁边。
    • URL_PREFIX 允许您在您的服务器上定义一个端口和路径,您的应用程序也将监听这些端口和路径。查看 HttpListener 链接了解其工作原理的详细信息。
    猜你喜欢
    • 2013-01-21
    • 2019-06-20
    • 1970-01-01
    • 2013-03-16
    • 2021-06-20
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多