You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

slack-ruby-client gem使用疑问:Client ID与Secret该如何配置?

解决Slack::Web::Api::Errors::InvalidAuth 认证问题

你用的SLACK_VERIFICATION_TOKEN是用来验证Slack请求来源的校验令牌,根本不是调用API的有效凭证——这就是你报错的核心原因。要调用Slack Web API,你需要用Bot Token或者User Token,而不是Verification Token,下面是具体操作步骤:

一、用Client ID和Secret获取有效API令牌

1. 选对令牌类型

  • 要是让机器人自动发消息,优先用Bot Token(格式一般是xoxb-xxx),权限更精准,适合自动化场景。
  • 要是需要模拟真实用户操作,就用User Token(格式一般是xoxp-xxx)。

2. 通过OAuth授权流程拿令牌

Slack应用必须走OAuth授权才能拿到可用的令牌,步骤如下:

  • 打开Slack开发者后台你的应用页面,进入OAuth & Permissions板块。
  • 配置Redirect URLs(本地测试的话,填http://localhost:3000/auth/slack/callback这类本地地址就行)。
  • 复制页面上的OAuth URL(里面包含你的Client ID),在浏览器打开这个链接,选择要授权的工作区,完成授权操作。
  • 授权成功后,你就能在页面上看到生成的Bot Token和User Token(如果你申请了用户权限的话)。

二、修改代码用正确令牌

把原来的SLACK_VERIFICATION_TOKEN替换成刚拿到的Bot Token或者User Token,示例代码如下:

Slack.configure do |config|
  # 替换成你拿到的Bot Token或User Token
  config.token = "xoxb-你的令牌内容"
  raise 'Missing Slack API Token' unless config.token
end

client = Slack::Web::Client.new

# 先测试认证是否成功
begin
  auth_response = client.auth_test
  puts "认证成功,当前用户:#{auth_response.user}"
rescue Slack::Web::Api::Errors::InvalidAuth => e
  puts "认证失败:#{e.message}"
end

# 发送消息
client.chat_postMessage(
  channel: '#channel_name', # 替换成实际的频道名或ID
  text: 'Hello World',
  as_user: true # 注意:用Bot Token的话,as_user要设为false;用User Token可以设为true
)

三、别忘了配置权限

确保你的应用在OAuth & Permissions页面已经添加了对应的权限:

  • 发送消息需要chat:write权限(Bot Token用)或者chat:write:user权限(User Token用)。
  • 如果要设置as_user: true,必须确保你的令牌拥有对应的用户操作权限。

内容的提问来源于stack exchange,提问作者Max Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 02:22:45