发出 api 请求时缺少 slack bot 范围

slack bot scope missing while making api request

我制作了一个 slack 应用程序,其中有一个机器人。我在权限范围内选择了channels:history、channels:read、channels:write,也通过了范围

"scope":"bot channel:history channel:read channel:write"

在进行我的 oauth2 验证时(使用 python),我得到了范围为

的响应
"scope":"identify,bot,channels:history,channels:read,channels:write"

以及客户端和机器人访问令牌。

现在,当我执行 api 调用以获取邀请我的机器人加入的频道的历史记录时,我得到

{ 
  ok: false,
  error: 'missing_scope',
  needed: 'channels:history',
  provided: 'identify,bot:basic' 
}

谁能告诉我哪里出错了。如何在我的 api 调用中 PROVIDE channels:history 范围。这真让我抓狂。我应该使用客户端访问令牌,即 xoxp-xxxx,而不是 bot 令牌,即 xoxb-xxxx 吗?'

谢谢!

由于您没有提及:您还需要在 "Oauth & Permission Scopes" 下的 Slack 应用程序的管理页面上指定所有必需的范围。

对于以后遇到这个问题的人;

您的集成机器人可以完全访问 slack api,而 slack 应用程序中的机器人则不会,因为它将公开使用。当你成功完成 oauth2 时,你应该得到 2 个令牌,user access tokenbot tokenuser token 用于从任何 channel/groups 读取历史记录,而 bot access token 用于写入它们。这意味着您必须不断地在您的应用中从 user token 切换到 bot access token

此外,请记住 bot-user 必须是您希望他连接到的私人频道的成员。

希望对您有所帮助。

Ps,如果有人找到更好的解决方法,请随时在下面回答。