Перейти к навигации

Trading Widget Аутентификация

Используйте партнерский токен для новой встроенной торговой SSO интеграции.

Просмотр в формате Markdown

Рекомендуемый режим: партнерский токен

Partner-token избегает использования коротких токенов в URL-адресах и сохраняет apiSecret на серверной части партнера.

const widget = TradingWidget.create('#trading-widget', {
baseUrl: 'https://app.6mm.com',
auth: {
mode: 'partner-token',
tokenProvider: async ({ channelId, symbol, reason }) => {
const resp = await fetch('/api/trading/embed-token', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ channelId, symbol, reason }),
})
if (!resp.ok) {
throw new Error('Failed to request embed token')
}
return resp.json()
},
},
})

Сопутствующая документация

Внутренний поток

1. Partner frontend receives auth_request from the iframe.
2. SDK calls tokenProvider.
3. Partner frontend calls its own backend.
4. Partner backend validates the partner session.
5. Partner backend calls 6MM Agent API or Java SDK createEmbedToken.
6. SDK sends embedToken to the iframe through postMessage.
7. iframe exchanges embedToken for a 6MM access token.
8. iframe continues initialization and emits ready.

tokenProvider контракт

ПолеНаправлениеОписание
channelIdSDK -> Серверная часть партнераУникальный идентификатор сеанса виджета. Серверная часть должна передать его createEmbedToken.
символSDK -> Серверная часть партнераТекущий или начальный торговый символ, передаваемый в качестве контекста интеграции; это не ограничение разрешений для торговой пары токенов.
причинаSDK -> Серверная часть партнераПочему SDK запрашивает токен, например начальную загрузку или обновление.
embedTokenСерверная часть партнера -> SDKКратковременный токен, созданный Agent SDK или агентом API.
expireAtСерверная часть партнера -> SDKВременная метка истечения срока действия токена, возвращаемая 6MM.

Обработка сбоев

СостояниеРекомендуемое обращение
Срок партнерской сессии истекВерните 401 из конечной точки партнера и попросите пользователя войти в систему еще раз.
Создание токена временно не удалосьВыдайте ошибку в tokenProvider и позвольте виджету обнаружить ошибку аутентификации.
channelId несоответствиеОтклоните запрос и заново создайте экземпляр виджета.
Пользователю не разрешено торговатьВозвращайте ошибку, контролируемую партнером, и не создавайте токен внедрения.

Режим совместимости: агент-sso

Agent-sso сохраняет старый поток билетов /agent-entry. Предпочитайте партнерский токен для новых интеграций.

const widget = TradingWidget.create('#trading-widget', {
baseUrl: 'https://app.6mm.com',
auth: {
mode: 'agent-sso',
entryUrlProvider: async ({ redirectPath }) => {
const resp = await fetch('/api/trading-entry', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ redirectPath }),
})
const data = await resp.json()
return data.webUrl
},
},
})

Торговля секундами и правила окружающей среды

Для секундных страниц используйте ту же аутентификацию partner-token с page и tradingMode, настроенными в виджете. Отдельного токена предсказания не существует. Каждый вызов tokenProvider должен получить новый одноразовый токен от вашего бэкэнда.

Верните embedToken, expireAt в секундах Unix и исходный channelId как объект верхнего уровня. Ответ токена Agent SDK не содержит channelId; ваш сервер повторяет текущий канал виджета. Если ваша конечная точка заключает ответы в data, разверните его перед возвратом из tokenProvider.

Полная интеграция секунд · Руководство по окружающей среде фондов