【问题标题】:Slack Requesting Permissions for a UserSlack 为用户请求权限
【发布时间】:2019-02-18 01:54:01
【问题描述】:

我正在尝试使用 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,
});

我认为我的困难是获得正确的令牌。进来的请求有一个token:

[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

谁能发现我在这里做错了什么?

【问题讨论】:

    标签: javascript slack slack-api


    【解决方案1】:

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

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

    要对您的应用进行身份验证并获取 Oauth 令牌,您需要遵循 here 中描述的 Oauth 流程。

    另外,一般来说,我建议不要使用仅与 apps.permissions.request 等工作区令牌一起使用的 API 端点。 Workspace 应用程序和令牌从未完成测试阶段,现在已正式成为旧版。这可能有点令人困惑,因为它们仍然列在所有 API 方法的官方列表中。但他们都有“开发者预览已结束”的免责声明。

    【讨论】:

    • 感谢您对token 字段的解释,我不知道我可以使用它检查发起者是否松弛。我知道第一位是斜线响应 - 使用trigger_id 请求用户权限批准的后面。我的应用程序已经生成了一个多伦多 - 这与 OAuth 不同吗?如果是这样,我可以从节点 SDK 获得 OAuth 吗?我在这里读到的东西建议我需要一个 apps.permissions.users.request,实际上似乎缺少(从这里使用权限 API api.slack.com/docs/working-for-users
    • 我很乐意帮助您解决所有问题,但恐怕通过 cmets 回答的内容太多了。建议更新您的问题或关闭此问题并发布一个新问题。一个一般性评论:建议使用工作区令牌(请参阅您的链接),这些令牌现在是遗留的并且从未离开测试阶段。使用您从我的答案中的链接获得的普通令牌。
    • 谢谢 Erik,很高兴再问一些问题。我发现 slack API 中有大量的选项和方法——实际上现在很难找到正确的问题要问!我会阅读你的链接,看看我是怎么做的。
    • 感谢您在答案中添加有关开发人员预览位的观点 - 我可能会建议他们从官方文档中删除它们,因为您是对的,这有点令人困惑。在我试图吸收的海量信息中,很容易错过免责声明!
    • 我添加了一个后续问题 - 但无论如何您可能会看到它。似乎您正在密切关注 slack 标签! stackoverflow.com/questions/54748535/…
    猜你喜欢
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2016-01-15
    • 2020-09-11
    • 2021-05-23
    相关资源
    最近更新 更多