npm request — настраиваемые заголовки HTTP для данных twitch

У меня есть задание получить данные из twitch API (Get Top Games). Я использовал модуль «запрос» для подключения к API twitch. Однако, когда я вызываю запрос, терминал показывает код состояния 401 из-за отсутствия токена OAuth. Мне было интересно, есть ли ошибка в заголовках объекта параметров.

const request = require('request');

const options = {
  url: 'https://api.twitch.tv/helix/games/top',
  headers: {
    'User-Agent': 'myclientID'
  }
};

function callback(error, response, body) {
  console.log(response.statusCode)
  const info = JSON.parse(body);
  console.log(info)

}

request(options, callback);

person Amy    schedule 20.05.2020    source источник


Ответы (1)


Согласно документации API Twitch, необходимо отправить client-id в отдельном заголовке Client-ID, а не под User-Agent. Также вам необходимо передать токен авторизации (токен доступа к приложению или токен пользователя OAuth)

curl -H 'Client-ID: uo6dggojyb8d6soh92zknwmi5ej1q2' \
-H 'Authorization: Bearer cfabdegwdoklmawdzdo98xt2fo512y' \
-X GET 'https://api.twitch.tv/helix/games/top'

В формате node.js request это должно быть примерно так:

var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://api.twitch.tv/helix/games/top',
  'headers': {
    'Client-ID': 'uo6dggojyb8d6soh92zknwmi5ej1q2',
    'Authorization': 'Bearer cfabdegwdoklmawdzdo98xt2fo512y'
  }
};
request(options, function (error, response) { 
  if (error) throw new Error(error);
  console.log(response.body);
});
person gaganshera    schedule 20.05.2020
comment
Спасибо за быстрый ответ. Мне все еще не очень ясен ваш ответ. Могу я попросить вас объяснить это подробнее? Спасибо! - person Amy; 20.05.2020
comment
В вашем объекте headers вы передаете headers: { 'User-Agent': 'myclientID' }. В документе API сказано, что вам нужно передать 'myclientID' в ключе 'Client-ID', как я передал выше. - person gaganshera; 20.05.2020
comment
Я по-прежнему не могу получить данные, и терминал показывает то же сообщение Ошибка: неавторизовано, статус: 401, токен OAuth отсутствует. - person Amy; 20.05.2020
comment
Есть ли предварительный запрос на проверку токенов? - person gaganshera; 20.05.2020
comment
Я заметил, что мой URL отличается от вашего api.twitch.tv/helix/games/top. Это вызывает проблему? И мой документ по API: dev.twitch.tv/docs/api/reference. #get-top-games Еще один вопрос для -H и -X. Для чего они? - person Amy; 20.05.2020
comment
Обновил мой ответ. Подробнее об API и авторизации см. Токен и идентификатор клиента, указанные в приведенном выше примере, являются фиктивными. - person gaganshera; 20.05.2020
comment
Я изменил идентификатор клиента на свой идентификатор клиента, но он все еще не работает. Что-то не так с авторизацией? «Авторизация»: «Bearer cfabdegwdoklmawdzdo98xt2fo512y» или что заполнять после Bearer? - person Amy; 20.05.2020
comment
Я могу только показать вам путь: dev.twitch.tv/docs/authentication :) - person gaganshera; 20.05.2020
comment
Извините, я получил секрет клиента, но все равно отправляю неверный токен OAuth. - person Amy; 20.05.2020
comment
dev.twitch.tv/docs/authentication/ - person gaganshera; 20.05.2020
comment
Большое спасибо! Я получил данные из API. Вы лучший учитель! - person Amy; 20.05.2020
comment
Вы слишком добры :) - person gaganshera; 20.05.2020