我正在尝试将交互式消息发布为Bot用户(使用chat.postMessage等)。
虽然我正在传递Bot访问令牌(从最初的OAuth收到)但我一直收到一条错误回复,声明“not_authed”。
当我尝试auth.test时,我得到了同样的结果。
我正在使用node.js中的“request”执行以下操作:
app.get("/testAuth/test", function(req,res){
console.log("in testAuth/test...sending test message to Slack");
var bToken = process.env.TESTBOT_ACCESS_TOKEN;
var slackMessageURL = "https://slack.com/api/auth.test";
var postOptions = {
uri: slackMessageURL,
method: "POST",
token: bToken
};
request(postOptions, (error, response, body) => {
if(error){
console.log("OOPPPPS....we hit an error in auth.test: " + error);
} else {
console.log("auth.test response: " + JSON.stringify(response));
}
});
res.send("Sent Test...check logs");
});
结果与:
auth.test response: {"statusCode":200,"body":"{\"ok\":false,\"error\":\"not_authed\"}",...
根据Slack WebAPI文档,如果我作为Bot发布,我应该使用Bot的访问令牌(从初始oauth收到),但是我想要正确格式化我的请求,或者令牌是不是Slack所期待的。
答案 0 :(得分:2)
好的,在与Slack支持人员交谈后,它(至少)显示我正在呼叫的WebAPI尚未支持application / json。这些可以使用x-www-form-urlencoded。
查看此post
我能够拼凑出成功的以下内容:
//up top
var request = require("request");
var querystring = require("querystring");
//...
app.get("/testAuth/test", function(req,res){
console.log("in testAuth/test...sending test message to Slack");
var bToken = process.env.TESTBOT_ACCESS_TOKEN;
var message = {
token: bToken
};
var messageString = querystring.stringify(message);
var messageLength = messageString.length;
var slackMessageURL = "https://slack.com/api/auth.test";
var postOptions = {
headers: {
"Content-length": messageLength,
"Content-type": "application/x-www-form-urlencoded"
},
uri: slackMessageURL,
body: messageString,
method: "POST"
};
request(postOptions, (error, response, body) => {
if(error){
console.log("OOPPPPS....we hit an error in auth.test: " + error);
} else {
console.log("auth.test response: " + JSON.stringify(response));
}
});
res.send("Sent Test...check logs");
});