【问题标题】:slack bot scope missing while making api request发出 api 请求时缺少 slack bot 范围
【发布时间】:2017-10-18 07:59:28
【问题描述】:

我制作了一个 Slack 应用程序,其中有一个机器人。我在我的权限范围内选择了频道:历史,频道:读取,频道:写入,并且我已经通过了范围

"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 调用中提供 channels:history 范围。这真的让我发疯。我应该使用客户端访问令牌,即 xoxp-xxxx,而不是机器人令牌,即 xoxb-xxxx 吗?'

谢谢!

【问题讨论】:

    标签: slack-api slack scopes


    【解决方案1】:

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

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

    另外,请记住,机器人用户必须是您希望他连接到的私人频道的成员。

    希望对您有所帮助。

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

    【讨论】:

    • 这帮助我通过了这个特定的错误,但紧随其后的是not_in_channel。我可以通过将chat:write.public 添加到机器人的作用域来绕过它(如此处所述:stackoverflow.com/questions/60402410/…
    【解决方案2】:

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

    【讨论】:

    • 是的,在我的 Oauth 和权限中,我也有 bot 和 channels:history、channels:read 和 channels:write 权限。 @erikkalkoken 我将编辑我的问题以添加此
    猜你喜欢
    • 2015-06-13
    • 2019-06-28
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2021-04-18
    • 2016-12-28
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多