我正在尝试使用Node API轻松地获取一些对话历史记录,此刻,我在权限方面有些挣扎。要阅读私人频道等,我相信我需要使用X-Slack-Use
发出所有请求。但是在我可以这样做之前,我需要让用户对应用程序进行身份验证。
我创建了一个新的 Slash 命令/digest
,该命令向我的应用程序发出了请求。然后,我需要发出以下请求权限:
const response = await this.slackWebClient.apps.permissions.request({
token: ...,
scopes: ["channels:history", "channels:read", "groups:history", "groups:read", "im:read"],
trigger_id: triggerID,
user: userID,
});
我认为我的困难是获得正确的令牌。传入的请求具有令牌:
[Object: null prototype] {
token: 'yM....R',
team_id: 'TD.....E',
team_domain: '...',
channel_id: 'CF.....B',
channel_name: 'email_digest_test',
user_id: 'UD.....Y',
user_name: 'Ian',
command: '/digest',
text: '',
response_url: 'https://hooks.slack.com/commands/TD.....E/55....62/cw....Eq',
trigger_id: '553.....45......6.bb.............719' }
但是,如果我尝试使用它,则会出现错误:
代码:
slackclient_platform_error
,错误:invalid_auth
如果我尝试使用我的应用程序OAuth令牌xoxp-45.........................
,那么我会得到一个
代码:
slackclient_platform_error
,错误:not_allowed_token_type
有人可以在这里发现我可能做错了吗?
答案 0 :(得分:1)
您发布的响应来自斜杠命令请求,而不是来自对Oauth API的调用。它包含一个名为token
的属性,但这不是Oauth令牌,而是所谓的验证令牌。验证令牌用于验证来自Slack的任何请求的真实性(与Oauth令牌相对,后者用于对从您的应用到API的请求进行身份验证)。
有关验证令牌的详细说明,请参见here。
要验证您的应用并获取Oauth令牌,您需要按照here中所述的Oauth流程进行操作。
此外,总的来说,我建议不要使用仅适用于apps.permissions.request
之类的工作区令牌的API端点。工作区应用程序和令牌从未完成Beta阶段,现在已正式成为旧版。可能会有些混乱,因为它们仍列在所有API方法的正式列表中。但是它们都有“开发人员预览已结束”免责声明。