Slack API不返回私有通道

时间:2019-02-18 13:36:15

标签: javascript node.js slack slack-api

我正在尝试获取Slack中的私人频道列表(按用户划分是可以的),但是我很难看到此信息。我最初将应用程序安装到Slack的工作区中,并以xoxp-4...........的形式获得了OAuth令牌。

应用OAuth令牌

当我尝试使用Slack API(节点SDK)时,我只会获得公开列出的渠道。

await new WebClient(`xoxp-4.....`)
    .conversations       
    .list({ exclude_archived: true })
).channels

如果我尝试使用Slack API测试仪来抓取channel list,我会得到相同的结果。

用户OAuth令牌
我已经遵循OAuth 2.0的过程来获取给定用户(我自己)的令牌。我认为我已经正确完成了所有操作(以下是回复):

{
        ok: true,
        access_token: 'xoxp-4.........',
        scope: 'identify,bot,commands,channels:history,groups:history,im:history,mpim:history,channels:read,emoji:read,groups:read,im:read,search:read,team:read,users:read,users:read.email,usergroups:read,users.profile:read,chat:write:user,chat:write:bot,links:read',
        user_id: 'UD......',
        team_name: '............',
        team_id: '.......',
        scopes: ['identify',
            'bot',
            'commands',
            'channels:history',
            'groups:history',
            'im:history',
            'mpim:history',
            'channels:read',
            'emoji:read',
            'groups:read',
            'im:read',
            'search:read',
            'team:read',
            'users:read',
            'users:read.email',
            'usergroups:read',
            'users.profile:read',
            'chat:write:user',
            'chat:write:bot',
            'links:read'
        ]
    }

有趣的是,如果进入应用程序管理,我发现这为我提供了完全相同的OAuth令牌(我想是因为是我将应用程序安装到工作区的)。

很明显,因为它是相同的令牌,所以即使我知道我应该能够以用户身份执行所有操作,我也仍然没有权限查看私有频道?

有人可以指出我可能会想念的东西吗?

1 个答案:

答案 0 :(得分:1)

之所以没有私人频道,是因为您没有要求私人频道。

conversations.list方法将仅在默认情况下返回公共频道。要同时获得私人频道,您需要相应地设置参数types。例如types = public_channel,private_channel

类似于调用channels.listChannels.list仅返回公共频道。如果要获取私人频道,则需要致电groups.list。 (请注意,出于历史原因,专用渠道在API中称为组)。

通常,我建议使用conversations.list,它功能更强大,并且是获得所有类型对话的推荐方法。