Comments (23)
Поддерживаю @mvkasatkin
Как вариант рассмотрите возможность передавать токен в URL или первым сообщением после открытие сокета.
from invest-openapi.
@SergeyBruhanov можете посмотреть в DevTools, ваш токен не передаётся на сервер, как и другие не вебсокет заголовки, поэтому и ошибка. Об этом собственно и тред.
from invest-openapi.
Привет!
У нас с предыдущим релизом появился стакан и свечи в REST-протоколе, возможно это сейчас поможет?
from invest-openapi.
@NikitaMelnikov, да, свечами, конечно, на данный момент можно решить вопрос. Но, получив определенные исторические данные, далее хотелось бы получать ивенты об изменении цены и просто обновлять локальную коллекцию, а не самому переполучать данные с определенным интервалом :) Так что, надеюсь, этот enhancement произойдет:)
from invest-openapi.
Кстати, для RestAPI включили CORS, что теперь тоже исключает возможность обращения к апи через браузер (без определенных приседаний). Есть ли в этом смысл? Локальные роботы вполне способны работать внутри браузера с использованием indexedDB, имея при этом визуализацию и отсутствие необходимости тянуть за собой и поддерживать излишний бэкенд.
Но на данный момент CORS и WebSocket header auth мешают этому, без видимых на то причин. Было бы здорово, если данный вопрос будет решен.
from invest-openapi.
@mvkasatkin cors всегда включены были, но они именно включены, т.е. разрешены. Иначе сваггер бы не работал
from invest-openapi.
@NikitaMelnikov стоит ли ожидать альтернативный способ передачи токена через browser websocket (который не поддерживает кастомные заголовки)?
from invest-openapi.
Пока что не смогли реализовать безопасный способ передачи авторизационных параметров в query.
Рекомендую пока что поднять локальный сервер на nodejs и проходить авторизацию через query в нем
from invest-openapi.
@NikitaMelnikov пока так и приходится делать. Но nodejs тут лишь костыль( Очень надеемся, что решение с авторизацией будет найдено. Как вариант, токен может быть передан единоразово, допустим с message auth. Далее на стороне сервера соединение будет считаться авторизованным.
from invest-openapi.
Тоже очень критичная проблема, хотелось бы получить решение.
Может как-то связать авторизацию, которая прошла по https, и у вас на сервере на определенное время она будет считаться как пройденной и для websocket ?
from invest-openapi.
Может как-то связать авторизацию, которая прошла по https, и у вас на сервере на определенное время она будет считаться как пройденной и для websocket ?
Из-за технических особенностей такое невозможно
from invest-openapi.
Пробую передать токен следующим образом
<script>ws = new WebSocket('wss://api-invest.tinkoff.ru/openapi/md/v1/md-openapi/ws', null, { headers: { Authorization: МОЙ_ТОКЕН}});
ws.onopen = function() { alert("Connection opened...") };
ws.onclose = function() { alert("Connection closed...") };
ws.onmessage = function(evt) { $("#msg").append("
"+evt.data+"
"); }; </script>Ошибка: Invalid or unexpected token
from invest-openapi.
ws = new WebSocket('wss://api-invest.tinkoff.ru/openapi/md/v1/md-openapi/ws', null, { headers: { Authorization: МОЙ_ТОКЕН}});
Authorization: "Bearer " + token
https://tinkoffcreditsystems.github.io/invest-openapi/auth/
from invest-openapi.
<script> ws = new WebSocket('wss://api-invest.tinkoff.ru/openapi/md/v1/md-openapi/ws', null, { headers: { Authorization: МОЙ_ТОКЕН}});
Браузерный WebSocket принимает 1-2 параметра. И заголовки к нему не добавить. Об этом, собственно, и тред.
from invest-openapi.
В третьем параметре же можно передать любые значения
Пробую так
Ошибка: Authentication failed; no valid credentials available
Может дополнительные параметры заголовка не проверяются у Тинькофф ?
from invest-openapi.
JS WebSocket в браузерах не поддерживает передачу заголовков, в отличии от NodeJS, а соответственно, нет возможности передать токен.
Один заголовок все-таки передается - Sec-WebSocket-Protocol. Может в нем передавать, если использование не по назначению этого заголовка не критично со стороны Тинькова?
from invest-openapi.
Вопрос актуален насчет браузерного доступа к API
from invest-openapi.
У разрабов тинькова похоже проблемы с английским - не удостоили даже ответом, поэтому теперь подкидываю ссылку с идеей на русском.
Токен отлично передается во втором аргументе - опробовал лично. Задача тиньковских спецов забрать его из Sec-WebSocket-Protocol и провести его авторизацию.
Итак, вопрос: что мешает немного откостылить ваш бэкенд? Web socket прокси на node js как пятое колесо в телеге...
from invest-openapi.
Коллеги и разработчики! Зачем нужна авторизация для получения общедоступных данных (стакан, свечи, статус)?
from invest-openapi.
Коллеги и разработчики! Зачем нужна авторизация для получения общедоступных данных (стакан, свечи, статус)?
Потому что. Меня тоже этот вопрос беспокоит. Как и стабильность работы вебсокета. Бывает, что соединение висит, а сообщения перестают приходить. Приходится вешать таймер и перезапускать соединение. И все снова начинает доставляться
from invest-openapi.
Коллеги и разработчики! Зачем нужна авторизация для получения общедоступных данных (стакан, свечи, статус)?
А с чего вы решили, что realtime-данные общедоступные?
Если по делу, то попробуйте распределить подписки по доступным 6 соединениям на пользователя и организовать на своей стороне keep-alive, reconnect + resubscribe (в случае потери связи). Более года все работает стабильно 99.9% времени.
from invest-openapi.
Коллеги и разработчики! Зачем нужна авторизация для получения общедоступных данных (стакан, свечи, статус)?
Такие данные как правило отдаются только с ключами API, и\или авторизацией. Просто так данные не возможно отдавать, дабы существуют на линии дорогостоящие проекты, которые будут висеть на шаре, которые будут топить канал... таких вариантов масса.
from invest-openapi.
Зачем нужна авторизация для получения общедоступных данных
Авторизация нужна, так как мы не имеем право транслировать котировки неопределенному кругу лиц. Только своим клиентам.
from invest-openapi.
Related Issues (20)
- Для облигации "Главторг выпуск 1 (figi BBG01475RD30)" не показывается цена и НКД в getPortfolio HOT 4
- Ошибка tinvest.exceptions.UnexpectedError: 500 {"trackingId":"dba85b244643578b","payload":{"message":"Unknown account" HOT 3
- Запросы начали падать с CORS ошибкой HOT 1
- Запросы падают с CORS HOT 1
- OpenApi v1 streaming protocol (via websocket) Getting error code = 403 while connection HOT 1
- Проблема с информацией по портфелю апи v2 HOT 2
- Rest запрос к portfolio HOT 1
- Тип string для полей instrumentType, currency объекта v1Instrument
- required поля
- В списке возвращаемых операций отсутствуют операции покупки юаня CNY HOT 1
- Получить дату оферты для облигации с плавающим купоном
- В выгрузке 5-ти минутных свечей отсутствуют вечерние данные
- Странная отработка рыночных ордеров HOT 2
- Узнать через API доступен ли инструмент для покупки или шорта HOT 1
- [Bug] Неправильный OrderState в песочнице
- streaming протокол, не достаточность данных HOT 1
- Ошибка отмены ORDER_TYPE_LIMIT ордера и его исполнение через 12 минут
- Добавить при начислении/списании вариационной маржи код тикера по которому проходит списание
- Sandbox: Не открываются некоторые сделки.
- Ошибка при запуске скрипта (Ошибка tinvest.exceptions.UnexpectedError: 500 ) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from invest-openapi.