向 oauth.access url 发送请求后出现松弛错误“invalid_code”

问题描述 投票:0回答:4

我正在尝试使用 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 令牌,但我不确定。

如有任何帮助,我们将不胜感激。

javascript authentication slack slack-api
4个回答
1
投票

这似乎是由于多种原因而返回的错误消息之一。上述方法都不适合我,但是当我在“设置”->“基本信息”->“应用程序凭据”中生成新的客户端密钥时,它解决了问题。此步骤将撤销所有现有令牌,这可能是解决问题的一部分(尽管李夏提出的手动撤销所有令牌的建议对我不起作用)。


0
投票

这就是我让它发挥作用的方式

 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);

0
投票

遇到了同样的问题,然后在响应中不断收到“无效代码”错误。事实证明,如果应用程序/工作空间已经有 OAuth 令牌,它将抛出此错误。

要解决此问题,请转到 Slack 应用程序管理部分中的“OAuth 和权限”,并撤销所有令牌(位于页面底部)。在下一个请求中,您的请求将返回一个新令牌。


0
投票

解决方案是在请求中发送 form-data 而不是 json。 正如丹尼尔·肯特评论的那样

© www.soinside.com 2019 - 2024. All rights reserved.