Slack机器人令牌应该如何存储? [英] How should Slack bot tokens be stored?

查看:0
本文介绍了Slack机器人令牌应该如何存储?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建我的第一个Slack机器人,我已经基本完成了……发送API请求、接收命令和事件等。但让我感到有点困惑的是,我应该如何处理"Bot用户OAuth访问令牌"。

令牌似乎是跨团队/工作区共享的,但它在通过调用/oauth.v2.access对单个用户进行身份验证期间返回。目前,我将返回的凭据有效负载存储在一个包含三列的表中:

  • 我的应用程序的内部用户ID
  • 负载中嵌入的Slack用户IDauthed_user.id
  • 整个JSON有效负载本身(如果您好奇,jsonb在Postgres中)

这使我可以为我的应用程序中发生的操作(按内部用户ID查找)以及Slack内的交互(按Slack用户ID查找)启动新的API调用。

让我有点困惑的是,当用户与我的机器人交互时,没有添加我的应用程序的约定是什么。当一个人("Jose")添加了我的应用程序,然后他们的同事("Mary")在Slack中发现了它,并查看主屏幕,向其发送消息等,就会发生这种情况。

为了执行某些操作,例如提示用户安装我的应用程序,我需要一个令牌。当然,我有一件礼物送给何塞,但不是送给玛丽。我还将Jose的团队ID存储在我的表中,并将Mary的团队ID作为传入事件的一部分。因此,从技术上讲,我可以执行以下操作来获得与Mary交互的工作令牌:

select credential_json from slack_credentials
where credential_json->>'type' = 'bot' and credential_json->'team'->>'id' = :marysTeamId

.这将取出我在Jose添加应用程序时捕获的机器人令牌。这是有效的,但感觉非常错误。我想如果我只是将机器人令牌存储在一个单独的表中,如下所示:

  • 负载中嵌入的Slack团队IDteam.id
  • JSON负载的子集(例如:access_tokenscopebot_user_id等,但不是authed_user)

那就不会觉得那么难吃了。但Docs+API的人体工程学也表明,这也不是一种常见的方法。所以我很好奇别人是怎么做的。如果我没有收到任何回复,我想我的计划是将机器人令牌分解到一个以团队为中心的表中。

谢谢!

推荐答案

Slack应用的基本概念是按工作区安装,而不是按用户安装。

因此,尽管应用程序的令牌确实派生自将应用程序安装到新工作区的用户,但工作区的所有用户都可以使用大多数应用程序功能。

例如,斜杠命令将适用于每个渠道中的每个用户 例如,相关频道的所有用户都可以看到您的应用程序的帖子。

因此,存储令牌的最佳方法通常是使用主键Slack Team ID、Slack User ID。

只是想澄清一下。您不需要令牌来提示用户安装您的应用程序。每个应用都可以从您托管的网页(使用"添加到松弛"按钮)安装,也可以直接从应用目录安装。

这篇关于Slack机器人令牌应该如何存储?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆