Как эмулировать запрос curl с помощью модуля node-fetch - PullRequest
0 голосов
/ 29 января 2019

У меня есть приложение для электронной коммерции, и я пытаюсь связаться с PayPal Rest Api, в частности с услугой PayPal для партнеров, я прочитал Документацию PayPal , и все это хорошо, но проблема в том, чтоони упомянули пример запроса с использованием curl следующим образом:

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
   -H "Accept: application/json" \
   -H "Accept-Language: en_US" \
   -u "client_id:secret" \
   -d "grant_type=client_credentials"

или

с использованием почтальона с базовым Auth:

  • Имя пользователя: Ваш идентификатор клиента.

  • Пароль: Ваш секрет.

Я пытаюсь реализовать то же самое, но с помощью функции извлечения узла из узла.JS

const fetch = require('node-fetch');

function authenticatePaypal() {
    fetch('https://api.sandbox.paypal.com/v1/oauth2/token', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Accept': 'application/json',
            'Accept-Language': 'en_US',
            'client_id': 'secret'
        },
        body: {
            "grant_type": "client_credentials"
        }
    }).then(reply => {
        console.log('success');
        console.log(reply);
    }).catch(err => {
        console.log('error');
        console.log(err);
    });
}

module.exports = {
    authenticatePaypal: authenticatePaypal
};

и я получаю этот ответ 401 НесанкционированныйЯ впервые имею дело с базовой аутентификацией в формате json.

1 Ответ

0 голосов
/ 29 января 2019

Неправильный заголовок авторизации.

-u "client_id:secret"

говорит, что curl использует Базовую аутентификацию .

Вы должны добавить заголовок авторизации

Authorization: Basic <base64 encoded "client_id:secret">
...