代码之家  ›  专栏  ›  技术社区  ›  Ian

为用户请求权限

  •  0
  • Ian  · 技术社区  · 6 年前

    我试图使用节点API从slack中获取一些对话历史记录,目前我在权限方面有点困难。要阅读私人频道等,我相信我需要向 X-Slack-Use .但在我这么做之前,我需要让用户对应用程序进行身份验证。

    我创造了一个新的 斜线 命令 /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_平台_错误 ,错误: not_allowed_token_type

    有人能看出我在这里做错了什么吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Erik Kalkoken    6 年前

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

    看见 here 有关验证令牌的更详细说明。

    要验证应用程序并获取Oauth令牌,您需要遵循下面描述的Oauth过程 here .

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