分发Slack Bot到新工作区后调用users.profile.get返回user_not_found错误求助
排查Slack Bot跨工作区调用users.profile.get报"user_not_found"的问题
以下是几个关键排查方向,逐一验证:
确认user_id的工作区唯一性
Slack的user_id是工作区专属的,原工作区的ID在新工作区完全不生效。别直接复用旧ID,必须获取新工作区目标用户的真实ID:在新工作区Slack客户端打开用户资料,右键点击用户名选择「复制成员ID」,替换代码里的slack_id再测试。复查权限的实际生效状态
虽然你自查过权限,但再确认两点:- 新工作区安装应用时,是否勾选了
users:read或users:read.email权限(这两个是users.profile.get的必需权限); - 如果目标用户是外部共享频道成员,还需要额外申请
users:read:user_scope权限,否则Bot无法访问这类用户的资料。
- 新工作区安装应用时,是否勾选了
验证访问令牌的上下文
能调用chat.postMessage仅说明令牌有效,但要确认:- 令牌是新工作区安装后生成的,不是旧工作区的令牌;
- 如果用的是Bot令牌,需确保其权限范围包含读取用户资料的权限(有些安装流程可能漏选);如果是用户令牌,要确认该用户在新工作区有正常访问权限。
检查用户的隐私设置
新工作区的目标用户可能设置了阻止Bot查看自己的资料:让用户进入「个人资料 → 设置和隐私 → 隐私 → 允许应用访问我的资料」,确认你的Bot在允许列表中。用API测试工具验证
直接在Slack开发者后台的API测试工具中,使用新工作区的令牌调用users.profile.get,传入正确的新工作区user_id:- 如果工具调用成功,说明你代码里的
slack_id变量传错了; - 如果工具也报错,说明是权限或用户本身的问题,继续排查上述几点。
- 如果工具调用成功,说明你代码里的
你的调用代码逻辑无问题,核心要确保slack_id是新工作区的有效用户ID,而非旧工作区的遗留值。
内容的提问来源于stack exchange,提问作者Hassaan Mahboob
相关产品推荐
相关产品推荐

