提问人:TheProductGuy44 提问时间:10/28/2023 更新时间:11/5/2023 访问量:42
如何在可分发的 Slack 应用中以编程方式获取和管理用户令牌?
How to programatically get and manage user tokens in a distributable slack app?
问:
我正在构建一个 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'}
答:
如何获取用户令牌,如何存储/重用?
当用户使用 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
另外,如何管理不同工作区的机器人令牌 / 组织?
安装应用的每个工作区都有自己的机器人令牌。因此,您需要能够区分不同工作区的令牌。
评论