Javascript LinkedIn oauth错误一个必需参数";客户“身份证”;不见了

Javascript LinkedIn oauth错误一个必需参数";客户“身份证”;不见了,javascript,node.js,axios,linkedin,Javascript,Node.js,Axios,Linkedin,所以我刚刚从LinkedIn oauth 1.0升级到2.0,我已经收到这个错误大约一天了。我看到了一篇关于php的帖子,但我在Node JS(Javascript)中无法理解它。以下是我当前的代码: axios .post("https://www.linkedin.com/oauth/v2/accessToken", { grant_type: "authorization_code", code: req.query.code, redirect

所以我刚刚从LinkedIn oauth 1.0升级到2.0,我已经收到这个错误大约一天了。我看到了一篇关于php的帖子,但我在Node JS(Javascript)中无法理解它。以下是我当前的代码:

axios
    .post("https://www.linkedin.com/oauth/v2/accessToken", {
      grant_type: "authorization_code",
      code: req.query.code,
      redirect_uri: keys.linkedinCallbackURL,
      client_id: keys.linkedinConsumerKey,
      client_secret: keys.linkedinConsumerSecret
    })
    .then(res2 => {
      console.log(res2);
    })
    .catch(error => {
      console.log(error);
    });
如果您有任何想法,请告诉我:)

链接到php解决方案:

链接至LinkedIn指南:
(第3步出错)

LinkedIn文档要求您以
应用程序/x-www-form-urlencoded
的形式发送数据,他们向我们展示了以下示例:

POST /oauth/v2/accessToken HTTP/1.1
Host: www.linkedin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=987654321&redirect_uri=https%3A%2F%2Fwww.myapp.com%2Fauth%2Flinkedin&client_id=123456789&client_secret=shhdonottell
默认情况下,主体序列化为JSON:

默认情况下,axios将JavaScript对象序列化为JSON

为了正确序列化正文,您应该使用
querystring
模块,如下所示:

const querystring = require('querystring');

axios
    .post("https://www.linkedin.com/oauth/v2/accessToken", querystring.stringify({
      grant_type: "authorization_code",
      code: req.query.code,
      redirect_uri: keys.linkedinCallbackURL,
      client_id: keys.linkedinConsumerKey,
      client_secret: keys.linkedinConsumerSecret
    }));

您提交的clien_id值是多少(即什么是'keys.linkedin ConsumerKey')?keys.linkedin ConsumerKey是linkedin提供的应用程序id。LinkedinConsumerKey是一个糟糕的变量名。您的错误似乎告诉您客户端id未被传递。尝试在consloe.log中捕获您传递的值(错误);我可以看到正确的变量传递了什么请求和客户端id。这就解决了它!谢谢:)