我可以使用 Slack 的 files.upload 方法获得 'thumb_pdf' 吗?

can I get 'thumb_pdf' using Slack's files.upload method?

在测试 Slack API 的 files.upload 时 我发现我无法获取带有缩略图的 PDF。

我要的是(我用Slack官方客户端搞定的):

但这是我使用 files.upload API 得到的结果。

所以我比较了channels.history的结果

左边可以找到'thumb_pdf'、'thumb_pdf_w'、'thumb_pdf_h'(使用官方客户端上传)。有谁知道如何使用 slack 的 API?

不知道对你有没有用。所以请将此视为几个答案之一。

在我的环境中,我也确认了和你一样的情况。使用 files.upload API 上传 PDF 时,未附加缩略图。另一方面,当使用官方客户端上传 PDF 时(我使用浏览器上传。),会附上缩略图。对于图像,我可以看到两种模式的缩略图。

分析:

我假设在使用官方客户端上传PDF时,可能会用到特殊的参数和端点。文件由 multipart/form-data 上传。所以我分析了上传PDF文件时的请求。我使用了 chrome 开发者工具。结果发现这种情况使用了特殊的endpoint和access token。

  • https://upload.slack.com/api/files.uploadAsync 用作端点。
    • files.upload处使用了https://slack.com/api/files.upload
  • xoxp-############-############-############-########## 用作访问令牌。 (使用 # 代替数字。)这是与 OAuth2 检索的遗留令牌和访问令牌的区别。
    • OAuth2 检索到的遗留令牌和访问令牌是xoxp-############-############-############-################################

这些不仅用于 PDF 文件,还用于其他文件。

实验:

作为实验,我尝试使用端点和通过分析请求检索到的访问令牌来请求。我为此使用了卷曲。 curl命令如下

curl \
     -F file=@sample.pdf" \
     -F channels=### channel ID ### \
     -F token=xoxp-############-############-############-########## \
     -F filename=sample.pdf \
     -F title="Upload test" \
     "https://upload.slack.com/api/files.uploadAsync"

结果:

使用上述curl命令时,返回{"ok":true,"ticket":"#####","file":"### file ID ###"}。并且可以在时间轴上看到带有缩略图的 PDF。如果 OAuth2 检索到的遗留令牌和访问令牌用于此端点,则返回 {"ok":false,"error":"not_allowed_token_type"}。由此发现xoxp-############-############-############-##########是特殊的token。

注:

  • 这个方法可能不通用。也不知道这种情况适不适合
  • 访问令牌的过期时间不清楚。

如果此信息对您没有用,我很抱歉。