如何使用Slack API获取用户所属的全部工作区列表?
问题说明
通过Sign in with Slack获取到用户访问令牌(user access token)后,调用身份查询接口的返回示例如下:
{ "ok": true, "user": { "name": "arbxxxxxxx", "id": "U0XXXXXXX", "email": "arbxxxxxxx@xxxxxxx.com" }, "team": { "id": "T0XXXXXXX" }, "response_metadata": { "scopes": [ "identity.basic", "identity.email", "openid" ], "acceptedScopes": [ "identity.basic" ] } }
上述返回结果仅包含触发本次授权流程的单个工作区信息:team: { id: 'T0XXXXXXX' },不会直接返回该用户加入的其他工作区数据。
解决方案
Slack有严格的工作区数据隔离机制,不存在可通过单个工作区签发的用户令牌,直接跨工作区拉取用户所有所属工作区的公开接口,要获取对应数据需要按实际场景处理:
- 若你需要获取所有安装过你的应用的工作区中,该用户的归属记录:需要在自有服务端持久化存储授权数据。每次用户在任意工作区完成
Sign in with Slack授权流程时,将接口返回的用户邮箱、对应工作区ID、该工作区下的用户ID做关联存储。后续需要查询该用户关联的所有工作区时,直接从自有数据库中匹配对应用户邮箱的关联记录即可。 - 若你需要获取用户加入的、未安装你应用的全部工作区列表:Slack未开放对应查询能力,这类数据属于用户隐私范畴,官方没有提供跨工作区的全量查询入口,无法通过接口获取。
- 若你对接的是Slack企业版组织:应用拿到企业级管理权限对应的授权范围后,可以调用企业组织维度的用户查询接口,拉取该用户在整个企业组织下归属的所有工作区信息。但这类权限仅对企业管理员授权的内部应用开放,普通第三方公开应用无法申请。
内容的提问来源于stack exchange,提问作者Arbrim Rashiti
相关产品推荐
相关产品推荐

