我可以通过 python Slack API 将文件上传到 Slack 通道。我无法下载
message['files'][0]['url_private_download']
中所示网址的二进制文件。
相反,使用
requests.get
、wget -mO <file-name> <url>
和 curl <url> --output <file-name>
时,我获得了 40KB 的 HTML。
奇怪的是,我可以在 Chrome 浏览器中输入相同的网址并下载二进制文件。
看起来好像有什么事情在幕后发生。我不确定如何最好地解决这个问题。
建议?
当 HTTP 客户端检索文件时,它需要以与 API 类似的方式提供其凭据。如果您的令牌具有正确的权限,HTTP 请求将响应文件内容。
在curl请求中,您通常会使用像
-H "Authorization: Bearer xoxb-xxxxxxxxx-xxxx"
这样的参数将机器人令牌作为不记名令牌呈现。在这种情况下,特别需要基于标头的身份验证。
该请求在您的浏览器中有效,因为会话和 cookie 携带有关用户和您正在交互的工作区的授权信息。