Tinkoff / invest-openapi-js-sdk

Apache License 2.0
211 stars 51 forks source link

Production-окружение не работает #139

Open de-soul opened 2 years ago

de-soul commented 2 years ago

При попытке получить список тикеров выдает ошибку:

FetchError: invalid json response body at https://api-invest.tinkoff.ru/openapi/market/stocks reason: Unexpected token N in JSON at position 0
    at /Users/desoul/Develop/test-tinkoff/node_modules/node-fetch/lib/index.js:273:32
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async OpenAPI.makeRequest (/Users/desoul/Develop/test-tinkoff/node_modules/@tinkoff/invest-openapi-js-sdk/build/OpenAPI.cjs.js:273:19) {
  type: 'invalid-json'
}

Разбираясь подробнее (273 строка в node_modules/@tinkoff/invest-openapi-js-sdk/build/OpenAPI.cjs.js) я вижу, что от https://api-invest.tinkoff.ru/openapi/market/stocks приходит такой ответ:

Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: {
    body: PassThrough {
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: true,
      [Symbol(kCapture)]: false,
      [Symbol(kCallback)]: null
    },
    disturbed: false,
    error: null
  },
  [Symbol(Response internals)]: {
    url: 'https://api-invest.tinkoff.ru/openapi/market/stocks',
    status: 403,
    statusText: 'Forbidden',
    headers: Headers { [Symbol(map)]: [Object: null prototype] },
    counter: 0
  }
}

Который @tinkoff/invest-openapi-js-sdk собственно и не может предобразовать в json. Оттуда и ошибка.

Код тестового модуля для демонстрации ошибки:

const OpenAPI = require('@tinkoff/invest-openapi-js-sdk');
const apiURL = 'https://api-invest.tinkoff.ru/openapi';
const socketURL = 'wss://api-invest.tinkoff.ru/openapi/md/v1/md-openapi/ws';
const secretToken = '<secret token>';
const api = new OpenAPI({ apiURL, secretToken, socketURL });

api
  .stocks()
  .then((r) => {
    console.log(r);
  })
  .catch((e) => {
    console.log(e);
  });

Вопрос: изменился ли адрес OpenAPI? Если да, то прошу указать на какой и исправить документацию к модулю @tinkoff/invest-openapi-js-sdk p.s. Сделайте пожалуйста обработку ошибок для неправильных URL Спасибо!

DarkTraveler commented 2 years ago

Добрый день, не удалось решить?