【发布时间】:2022-01-03 18:33:07
【问题描述】:
我在测试工作区中创建了一个 Slack Bot 来玩。我要做的就是运行一个 GET API 来收集频道的内容,但我在第一个障碍中绊倒了......
API = GET https://slack.com/api/conversations.history
变量:
- 令牌=xoxb-xxxx...AwQ
- 频道= xxxxH9P
- 机器人是added to the channel。
- 我添加了正确的Scopes。
- 使用 Tester API here 确实有效!
但是我自己的 HTML 代码失败了……返回 invalid_auth……所以我想这一定是我的 HTML 的问题……但问题是,完全相同的代码适用于我之前设置的另一个 slack 机器人!
基本的 HTML:
<html>
<head>
</head>
<body>
<button id = "SendButton" onclick="GetChannelFromSlack()">GET</button>
<p id="GET API Output">Test</p>
</body>
<script>
function GetChannelFromSlack() {
var slackBotToken = "xoxb-xxxxAwQ";
var slackChannelID = "xxxxH9P";
var getSlackData = new XMLHttpRequest();
var url = new URL('https://slack.com/api/conversations.history?token='+slackBotToken+'&channel='+slackChannelID);
getSlackData.open( "GET", url, true );
//getSlackData.setRequestHeader = ('Authorization', 'Bearer xoxb-xxxxAwQ');
getSlackData.responseType = 'json';
getSlackData.send();
getSlackData.onload = function() {
var jsonResponse = getSlackData.response;
document.getElementById("GET API Output").innerHTML = JSON.stringify(jsonResponse);
}
}
</script>
</html>
(代码 sn-p 实际上无法工作,因为我没有输入我的实际机器人令牌/频道 ID)
编辑此外,为了隔离问题 - 这是一个 curl 命令,适用于一个机器人/频道,但不适用于另一个:
工作: curl -X GET 'https://slack.com/api/conversations.history?token=xoxb-xxx-VKa&channel=CxxxxTX'
不工作: curl -X GET 'https://slack.com/api/conversations.history?token=xoxb-xxx-AwQ&channel=Cxxxx9P'
我看不出这两个机器人的设置有什么不同...
如果有人能找出失败的原因,我将不胜感激!
问候, 丹恩
【问题讨论】:
-
来自docs:令牌应作为HTTP 授权标头 或作为POST 参数 传递。您作为 GET 参数传递。
-
感谢詹姆斯的回复!我在文档中也看到了这一点。这个 API 绝对是一个 GET .. 你可以在注释掉的行中看到,我也尝试将令牌作为标题包含:( getSlackData.setRequestHeader = ('Authorization', 'Bearer xoxb-xxxxAwQ') ;)
标签: javascript html api bots slack