用户的松弛请求权限

时间:2019-02-16 23:08:30

标签: javascript slack slack-api

我正在尝试使用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

有人可以在这里发现我可能做错了吗?

1 个答案:

答案 0 :(得分:1)

您发布的响应来自斜杠命令请求,而不是来自对Oauth API的调用。它包含一个名为token的属性,但这不是Oauth令牌,而是所谓的验证令牌。验证令牌用于验证来自Slack的任何请求的真实性(与Oauth令牌相对,后者用于对从您的应用到API的请求进行身份验证)。

有关验证令牌的详细说明,请参见here

要验证您的应用并获取Oauth令牌,您需要按照here中所述的Oauth流程进行操作。

此外,总的来说,我建议不要使用仅适用于apps.permissions.request之类的工作区令牌的API端点。工作区应用程序和令牌从未完成Beta阶段,现在已正式成为旧版。可能会有些混乱,因为它们仍列在所有API方法的正式列表中。但是它们都有“开发人员预览已结束”免责声明。

相关问题