松弛的sessions.list方法不会列出所有频道

时间:2018-12-12 04:57:32

标签: slack slack-api

我有一个宽松的应用程序,并且已经使用此应用程序进行了身份验证。当我列出所有频道时,某些私人频道未列出。我们是否需要工作区管理员的访问令牌来列出所有私有和公共频道?

2 个答案:

答案 0 :(得分:2)

以下是Slack的安全体系结构的工作原理,这说明了为什么您无法使用conversations.list获得所有私有渠道。

一个用户只能看到他所属的私人频道。这包括具有管理员和所有者角色的用户,因此,即使是工作区的创建者也不会看到不被邀请访问的私人渠道。

令牌有两种类型:

  • 用户令牌会继承安装该证书的用户的访问权限 松弛的应用程序。因此,如果您安装了Slack应用,则只能看到 您所属的私人频道。
  • 机器人令牌有所不同。使用机器人令牌,应用程序可以 只看到该机器人用户所属的私人频道。

有两种解决方法可以访问所有频道:

普通用户

确保通用用户(例如slackadmin)是所有专用渠道的成员。然后,使用他的访问令牌,一个Slack应用程序也可以访问所有这些私有频道。这是一种组织解决方案。

收集所有用户令牌

收集工作空间中所有用户的令牌,然后使用这些令牌访问所有会话,包括。他们是私人频道的成员。 可以通过要求每个用户一次安装Slack应用程序(通过标准的OAuth“ Add to Slack”过程)来实现,这在Slack术语中称为配置。

答案 1 :(得分:2)

在大型组织中谷歌搜索类似问题时偶然发现了这个问题-我正在使用公共频道,但并不是所有人都在播放。

原来,Slack的默认限制是返回 100个频道。要绕过它,只需传递一个limit: 9999参数,例如:

  app.client.conversations.list({
    token: process.env.SLACK_BOT_TOKEN,
    limit: 9999
  }).then((res: any) => {...})

另请参阅:conversations.list API