Документация LinkedIn просит вас отправить данные как application/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
В документации Axios говорится, что по умолчанию тело сериализуется как 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
}));