Как конвертировать этот запрос Curl в Javascript - PullRequest
0 голосов
/ 01 декабря 2018

Я использую Streamlabs API для обновления очков лояльности для пользователей.После выполнения ниже, точки не обновляются, и в блоке перехвата выдается ошибка.Единственный пример, приведенный для выполнения этого запроса - это запрос curl.(см. здесь ).Может быть, их пример неверен?

Я использую Javascript и модуль Request-Promise.Я успешно сделал запросы POST с этим модулем для Oauth с Twitch.Однако я не могу заставить этот пост работать с Streamlabs API, я попробовал несколько способов.Это тот же код, который я использовал для запроса POST к API Twitch, и он был успешным.Я не могу понять, почему это не работает для Streamlabs:

      const options = {
        access_token: streamlabsToken,
        channel: TWITCH_CHANNEL,
        users: 'users[' + username + ']=' + REFERRAL_POINTS
      }


      request.post(pointsAddEndpoint, { json: options })
        .then((slResponse) => {                                                       // Then 2
            if (slResponse.hasOwnProperty('message')) {
              console.log('Streamlabs response: ' + slResponse.message);
            }
            res.end();
        })
      .catch(function (error) {
        console.log('Error adding refer points: ' + error.message);
        res.end();
      });

Я уверен, что я просто форматирую что-то здесь не так, любой ввод?

ОБНОВЛЕНИЕ

Я получил запрос на работу.Параметры для 'users' не должны быть 'users = users [username] = 20 & users [username] = 30', это должны быть просто 'users [username] = 20 & users [username] = 30' (удалено 'users =').

Я сделал это в своем options объекте так:

      const options = {
        access_token: streamlabsToken,
        channel: TWITCH_CHANNEL
      }

      options['users[' + username + ']'] = REFERRAL_POINTS;

Однако это все еще не работает.Я знаю, что правильно устанавливаю параметр 'users', потому что я напечатал в журнал options['users[' + username + ']'], и он дал мне правильный REFERRAL_POINTS.

На данный момент я думаю, что я просто наберу все этов виде строки.Как мне передать это в тело request.post?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Получается, что API не будет принимать параметры тела, даже если в справочнике по API сказано, что это то, что вам следует делать.На самом деле они должны быть параметрами запроса.Я думаю, что ссылка на API неверна.Я добавил параметры непосредственно в URL и поместил токен доступа OAuth Streamlabs в заголовок, после чего он заработал!

      var dataString = 'users[' + username + ']=' + REFERRAL_POINTS + '&channel=' + TWITCH_CHANNEL;

      const options = {
          method: 'POST',
          url: 'https://streamlabs.com/api/v1.0/points/add' + '?' + dataString,
          headers: {
            'Authorization': 'Bearer ' + streamlabsToken
          },
          json: true
      };


      request.post(options)
        .then((slResponse) => { 
          // Do something                                                      
        })
       .catch(function (error) {
          // Do something
        });
0 голосов
/ 02 декабря 2018
const options = {
    method: 'POST',
    uri: 'https://streamlabs.com/api/v1.0/points/add', // whatever the endpoint
    body: {
        access_token: streamlabsToken,
        channel: TWITCH_CHANNEL,
        users: 'users[' + username + ']=' + REFERRAL_POINTS
    },
    json: true // Automatically stringifies the body to JSON
};


request(options)
.then((parsedBody) => {
    // POST succeeded...
})
.catch((err) => {
    // POST failed...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...