Slack Web API 失败并显示 not_authed
Slack WebAPI fails with not_authed
我正在尝试 post 作为机器人用户的交互式消息(使用 chat.postMessage 等)。
虽然我传递了机器人访问令牌(从初始 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 文档,如果我 post 作为 Bot,我应该使用 Bot 的访问令牌(从初始 oauth 收到),但我想我正在格式化我的请求不正确,或者令牌不是 Slack 所期望的。
好的,在与 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");
});
我正在尝试 post 作为机器人用户的交互式消息(使用 chat.postMessage 等)。
虽然我传递了机器人访问令牌(从初始 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 文档,如果我 post 作为 Bot,我应该使用 Bot 的访问令牌(从初始 oauth 收到),但我想我正在格式化我的请求不正确,或者令牌不是 Slack 所期望的。
好的,在与 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");
});