如何获取安装我的松弛应用程序的所有工作区的信息

时间:2017-09-28 16:23:50

标签: node.js slack slack-api

如何在用户安装我的松弛应用程序时获取Slack Workspace数据?

我的目标是收集安装了我的应用程序的所有工作区ID。

主要想法:

  • 用户安装了我的应用程序
  • 授权发送到某个外部URL后的工作区ID(安装了应用程序)
  • 服务器无处理请求

我可以通过这个过程解决这个问题吗? https://api.slack.com/docs/oauth

3 个答案:

答案 0 :(得分:2)

如果您在OAuth流程中没有存储它们,则无法检索安装了Slack应用程序的所有现有工作区。

正如Erik所说,每次安装应用程序时都会获得工作区信息,但是您的工作就是存储该信息。

答案 1 :(得分:1)

每个Slack团队都需要通过OAuth流程将Slack应用程序安装到他们的工作区。这通常是通过调用您的应用程序的网页来实现的,该网页具有" Add to Slack"按钮并使用Slack服务器调节Oauth进程。

当OAuth流程成功时,您的应用将从Slack服务器接收工作区特定访问令牌以及团队信息,包括团队ID和团队域。您的应用应存储此信息,以便您可以在以后按要求检索和使用它。

如果您只存储了每个Slack团队的访问令牌,您可以使用该访问令牌调用auth.test以检索有关已连接的Slack团队的更多信息,包括团队ID。

简而言之,是的,OAuth流程将帮助您收集这些信息。

答案 2 :(得分:0)

如果有人需要解决方案。 来自slack-docs:

  

是时候为您的应用设置重定向网址了。这是端点   Slack在a期间向服务器发送一个唯一的临时代码   用户的安装。然后,您的服务器将发送回此代码   使用您的客户端ID和客户端密钥,以便我们知道我们可以信任   你。

因此,如果安装您的应用的用户重定向到您的应用设置的redirect_url。比用户接受权限:

  • Slack API将代码发送到您的服务器
  • 您必须重新发送代码。节点示例见下文:

const request = require('request-promise'); let options = { method: 'POST', uri: 'https://slack.com/api/oauth.access', formData: { client_id: "client_id", client_secret: "client_secret", code: req.query.code }, json: true }; request.post(options).then(result => { res.json(result) });

在结果变量中,您将获得所有收集数据。