Skip to navigation

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

Використовуйте маркер партнера для нових інтеграцій вбудованої торгівлі SSO.

View as 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 невідповідністьВідхилити запит і повторно створити екземпляр віджета.
Користувачеві заборонено торгуватиПовернути помилку, контрольовану партнером, і не створювати маркер вбудовування.

Режим сумісності: agent-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; ваш сервер повторює поточний канал Widget. Якщо ваша кінцева точка загортає відповіді в data, розгорніть її перед поверненням із tokenProvider.

Повна секундна інтеграція · Посібник з охорони навколишнього середовища