在提出api请求时,slack bot范围缺失

问题描述 投票:6回答:2

我做了一个松散的应用程序,我有一个机器人。我选择了频道:历史,频道:阅读,频道:在我的许可范围内写作,我也通过了范围

"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电话中的历史范围。这真让我疯了。我应该使用客户端访问令牌,即xoxp-xxxx,而不是机器人令牌,即xoxb-xxxx?

谢谢!

slack-api slack scopes
2个回答
20
投票

对于将来遇到这个问题的人;

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

enter image description here

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

希望有所帮助。

Ps,如果有任何更好的方法可以解决这个问题,请随时回答下面的问题。


2
投票

由于您没有提到它:您还需要在“Oauth和权限范围”下的Slack应用程序的管理页面上指定所有必需的范围。

© www.soinside.com 2019 - 2024. All rights reserved.