Ошибка LinkedIn oauth Обязательный параметр "client_id" отсутствует - PullRequest
0 голосов
/ 16 ноября 2018

, поэтому я просто обновляюсь с 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 OAuth Отсутствует обязательный параметр "clien_id"

Ссылка на руководство LinkedIn: https://developer.linkedin.com/docs/oauth2 (ошибка на шаге 3)

1 Ответ

0 голосов
/ 16 ноября 2018

Документация 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
    }));
...