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

使用Slack Bolt.JS上传文件至Block消息时遇not_allowed_token_type错误

Slack机器人上传图片嵌入Block消息遇权限错误的问题解决

问题原因

files.sharedPublicURL接口不支持用Bot Token调用,这个接口只允许使用User Token(xoxp-开头的令牌),这是Slack API的权限限制,Bot Token没有共享文件为公开的权限,所以触发了not_allowed_token_type错误。

解决办法

办法一:换用User Token调用公开接口

  1. 先获取一个带有files:write:user和files:share权限的User Token(注意不是Bot Token)。
  2. 修改代码里的令牌参数:
const results2 = await app.client.files.sharedPublicURL({
    token: SLACK_USER_TOKEN, // 替换成你的User Token
    file: result.file.id
});
  1. 之后就能正常拿到permalink_public,用来作为Block消息里的图片链接。

办法二:不用公开文件,直接用内部私有链接

Bot上传的文件在同工作区内,发送消息时可以直接用文件的内部私有链接,不用额外公开操作,更省事:
修改chat.postMessage的代码,把图片链接换成上传返回的url_private:

await app.client.chat.postMessage({
    token: SLACK_BOT_TOKEN,
    channel: linus.slackId,
    text: 'Hello world!',
    blocks: [
        {
            type: 'image',
            image_url: result.file.url_private, // 改用私有链接
            alt_text: 'Linus'
        }
    ]
});

这样工作区内的成员都能正常看到图片,不会触发权限错误,也不用换令牌。

内容的提问来源于stack exchange,提问作者Linus Romland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:50:44