【问题标题】:chat.postMessage xoxb token that works to post messages to all users in all workspaceschat.postMessage xoxb 令牌,用于向所有工作区中的所有用户发布消息
【发布时间】:2019-10-23 13:40:46
【问题描述】:

我为我的 Slack/Node.js 机器人使用:https://www.npmjs.com/package/@slack/interactive-messageshttps://www.npmjs.com/package/@slack/events-api。我使用以下方式捕捉到与机器人的任何交互:

slackEvents.on(‘message’, (message: any, body: any) => …);

在 Slack 用户可以与机器人聊天之前,他们必须使用:https://api.slack.com/docs/sign-in-with-slack 将其集成到他们的工作区中,这在我的网站上可供登录用户使用。成功响应后,我得到两个不同的访问令牌:

  1. 来自 bot_access_token 的基于 xoxb 的身份验证令牌(如果我正确,这是基于工作区的访问令牌)
  2. 来自 access_token 的基于 xoxp 的身份验证令牌(如果我正确,这是基于用户的访问令牌)

我将上述令牌存储在我的数据库中的用户记录中。我使用 xoxb 令牌执行来自我的机器人引擎的方法,该引擎也可以访问数据库,例如:https://api.slack.com/methods/chat.postMessage

但是,一旦机器人被集成,机器人就会暴露给许多用户。未执行“使用 slack 登录”流程且在其数据库中的用户记录中没有任何 xoxp 或 xoxb 令牌的用户。我可以使用什么 xoxb 令牌向他们发送 chat.postMessage?

我看到在“OAuth & Permission”链接下的 Slack API Bot 仪表板中有一个 OAuth 访问令牌 (xoxp) 和 Bot 用户 OAuth 访问令牌 (xoxb)。这是一个主 xoxb 令牌,可用于在任何集成了我的应用程序的工作区中向 Slack 中的所有用户聊天.postMessage?

【问题讨论】:

    标签: slack-api


    【解决方案1】:

    令牌始终绑定到一个工作区和一个用户。没有适用于多个工作区的“主”令牌。

    但是,应用通常每个工作区只需要一个令牌,它会在准时安装过程中收到(如您所述)。您显然希望将该令牌(如果您有机器人用户,则为机器人用户令牌和访问令牌)存储在您的应用数据库中。

    如果您的应用具有必要的范围,则它可以将该令牌用于涉及该工作区的所有 API 调用。例如您可以使用相同的令牌向任何用户发送消息。为此,您只需将传入请求中的团队 ID 与您的响应的正确令牌匹配,即可与不同的工作区一起使用。

    要向任何用户发送直接消息,只需将用户的 ID 用作chat.postMessage 的频道。您会在消息事件中获得该 ID。

    由于您有机器人用户,我建议您尽可能使用机器人令牌,并且仅在机器人令牌不起作用的情况下使用访问令牌(并非所有 API 方法都适用于机器人令牌)。

    可以在here找到这些令牌之间差异的详细说明。

    另见How to get a workspace agnostic Slack bot token?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多