Slack 为用户请求权限
Slack Requesting Permissions for a User
我正在尝试使用 Node API 从 slack 中获取一些对话历史记录,目前我在权限方面遇到了一些问题。要阅读私人频道等,我相信我需要用 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' }
但是,如果我尝试使用它,我会得到一个错误:
code: slackclient_platform_error
, error: invalid_auth
如果我尝试使用我的应用程序 OAuth 令牌 xoxp-45.........................
然后我得到一个
code: slackclient_platform_error
, error: not_allowed_token_type
谁能发现我这里可能做错了什么?
您发布的响应来自斜杠命令请求,而不是来自对 Oauth API 的调用。它包含一个名为 token
的 属性,但这不是 Oauth 令牌,而是所谓的 验证令牌 。验证令牌用于验证来自 Slack 的任何请求的真实性(与 Oauth 令牌相反,Oauth 令牌用于验证从您的应用程序到 API 的请求)。
有关验证令牌的更详细说明,请参阅 here。
要对您的应用进行身份验证并获取 Oauth 令牌,您需要遵循 here 中描述的 Oauth 流程。
此外,一般来说,我建议不要使用仅适用于 apps.permissions.request
等工作区令牌的 API 端点。 Workspace 应用程序和令牌从未完成测试阶段,现在正式成为遗留产品。这可能有点令人困惑,因为它们仍然列在所有 API 方法的官方列表中。但他们都有 "Developer preview has ended" 免责声明。
我正在尝试使用 Node API 从 slack 中获取一些对话历史记录,目前我在权限方面遇到了一些问题。要阅读私人频道等,我相信我需要用 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' }
但是,如果我尝试使用它,我会得到一个错误:
code:
slackclient_platform_error
, error:invalid_auth
如果我尝试使用我的应用程序 OAuth 令牌 xoxp-45.........................
然后我得到一个
code:
slackclient_platform_error
, error:not_allowed_token_type
谁能发现我这里可能做错了什么?
您发布的响应来自斜杠命令请求,而不是来自对 Oauth API 的调用。它包含一个名为 token
的 属性,但这不是 Oauth 令牌,而是所谓的 验证令牌 。验证令牌用于验证来自 Slack 的任何请求的真实性(与 Oauth 令牌相反,Oauth 令牌用于验证从您的应用程序到 API 的请求)。
有关验证令牌的更详细说明,请参阅 here。
要对您的应用进行身份验证并获取 Oauth 令牌,您需要遵循 here 中描述的 Oauth 流程。
此外,一般来说,我建议不要使用仅适用于 apps.permissions.request
等工作区令牌的 API 端点。 Workspace 应用程序和令牌从未完成测试阶段,现在正式成为遗留产品。这可能有点令人困惑,因为它们仍然列在所有 API 方法的官方列表中。但他们都有 "Developer preview has ended" 免责声明。