【问题标题】:missing_scope error when trying to fetch channel history with bot token尝试使用机器人令牌获取频道历史记录时出现 missing_scope 错误
【发布时间】:2019-07-15 15:15:16
【问题描述】:

使用 Slacks Bolt 框架执行以下操作时:

app.client.conversations.history({
      token: token,
      channel: channelId,
      latest: messageId,
      count: 1
    })

我收到Error: An API error occurred: missing_scope

我正在传递一个 Bot 令牌(指示的文档受支持 https://api.slack.com/methods/conversations.history)并且已经在我的 oAuth 和权限范围中添加了 channels.historychannels.read 范围,所以我有点糟糕。

以前有人遇到过这种情况吗?

【问题讨论】:

  • 您是否可能从公共频道以外的任何其他地方请求消息? channels.history 仅对那些有效,例如私人频道需要groups.history
  • 它还应该在 API 响应中告诉您我认为缺少哪些范围
  • 嘿,@ErikKalkoken 感谢您的回复。我也启用了 groups.history,但在这种情况下,它是一个公共频道。我从 API Call 得到的错误只是说Error: An API error occurred: missing_scope
  • 我会尝试通过 Postman 直接调用 API,甚至只是在浏览器中调用 API,看看是否是您的库的问题。您可能还会收到更多错误信息。
  • 我仔细检查了文档,并且机器人令牌实际上不适用于您的情况。详情请查看我的回答。

标签: javascript slack slack-api


【解决方案1】:

如果您想使用conversations.history 从公共频道提取消息,您的机器人令牌将不起作用。它只有直接消息通道的内置范围,不能添加范围。

来自API documentation page

Bot 用户令牌可以将此方法用于直接消息和多方 直接消息对话,但缺乏足够的使用权限 此方法适用于公共和私人频道。

来自bot token documentation page

机器人用户令牌不能添加基于资源的 OAuth 范围, 在 OAuth 安装流程中请求的除 bot 以外的任何范围 对机器人用户令牌没有影响

因此,解决方案是使用 Oauth 访问令牌(即用户令牌)和所需的范围。

【讨论】:

  • 我刚刚收到了来自 Slack API 团队的相同回复。文档似乎并不那么清楚。我感谢您的帮助。谢谢。
猜你喜欢
  • 2022-06-23
  • 2012-10-07
  • 2011-10-25
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
相关资源
最近更新 更多