我正在尝试使用 Slack 验证我的应用程序。几天来它工作得很好,但现在它给我带来了一个错误
invalid_code
const requestBody = qs.stringify({
code: code,
redirect_uri: redirect_uri,
client_id: client_id,
client_secret: client_secret
});
await axios
.post(url, requestBody, config).
then(server => console.log(server)).catch(err => console.log(err))
服务器响应:
{ ok: false, error: 'invalid_code' }
我得到的代码就是这种格式。
code=303414024726.805164905556.526d546072e9b2408e0743f42ca3bb5843553a6c3b930b1de2c1e31847b25448
我认为这是 JWT 令牌,但我不确定。
如有任何帮助,我们将不胜感激。
这似乎是由于多种原因而返回的错误消息之一。上述方法都不适合我,但是当我在“设置”->“基本信息”->“应用程序凭据”中生成新的客户端密钥时,它解决了问题。此步骤将撤销所有现有令牌,这可能是解决问题的一部分(尽管李夏提出的手动撤销所有令牌的建议对我不起作用)。
这就是我让它发挥作用的方式
let slackUrl = `https://slack.com/api/oauth.v2.access`;
let client_id = process.env.SLACK_CLIENT_ID;
let client_secret = process.env.SLACK_CLIENT_SECRET;
let details = {
code,
client_id,
client_secret
}
var formBody = [];
for (var property in details) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
const _headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
let config = {
method: 'POST',
url: slackUrl,
data: formBody,
headers: _headers
};
let installation = await axios(config);
遇到了同样的问题,然后在响应中不断收到“无效代码”错误。事实证明,如果应用程序/工作空间已经有 OAuth 令牌,它将抛出此错误。
要解决此问题,请转到 Slack 应用程序管理部分中的“OAuth 和权限”,并撤销所有令牌(位于页面底部)。在下一个请求中,您的请求将返回一个新令牌。
解决方案是在请求中发送 form-data 而不是 json。 正如丹尼尔·肯特评论的那样