如何在可分发的 Slack 应用中以编程方式获取和管理用户令牌?

How to programatically get and manage user tokens in a distributable slack app?

提问人:TheProductGuy44 提问时间:10/28/2023 更新时间:11/5/2023 访问量:42

问:

我正在构建一个 Slack 应用程序,我计划将其分发给多个组织/工作区。我使用通过 Slack Oauth2 流程 (https://api.slack.com/authentication/oauth-v2) 获得的机器人令牌。机器人令牌具有正确的范围,并允许我在工作区上执行操作。我有一些功能需要用户令牌,例如,为用户设置提醒,这需要用户令牌。当用户与应用进行一些交互时,例如首次安装应用或打开主页或单击按钮,将设置此值。如何获取用户令牌,如何存储/重用?

此外,如何管理不同工作区/组织的机器人令牌?

我的后端/应用程序本质上是一个 Python flask 应用程序。 谢谢!

我尝试使用机器人令牌设置提醒,但出现此错误,

slack_sdk.errors.SlackApiError: The request to the Slack API failed. (url: https://www.slack.com/api/reminders.list) The server responded with: {'ok': False, 'error': 'not_allowed_token_type'}

松弛 API

评论


答:

0赞 WilliamHensley 11/5/2023 #1

如何获取用户令牌,如何存储/重用?

当用户使用 Slack Oauth2 流安装你的应用时,你应从 Slack 获得以下令牌响应:

{
"ok": true,
"access_token": "xoxb-<...>",    <---BOT TOKEN
"token_type": "bot",
<...>
"authed_user": {
    "access_token": "xoxp-1234", <---USER TOKEN
    "token_type": "user"
    <...>
   }
}

当您需要代表安装应用的用户执行操作时,请使用用户令牌,当您作为机器人执行操作时,请使用机器人令牌。安装应用的每个用户都将拥有自己的用户令牌。按照 Slack 文档的建议,将令牌存储在某个安全的地方: https://api.slack.com/authentication/best-practices

另外,如何管理不同工作区的机器人令牌 / 组织?

安装应用的每个工作区都有自己的机器人令牌。因此,您需要能够区分不同工作区的令牌。