Trading Widget Autenticazione

Usa partner-token per nuove integrazioni di trading SSO embedded trading.

Visualizza come Markdown

partner-token evita di inserire token brevi negli URL e mantiene apiSecret sul backend del partner.

1const widget = TradingWidget.create('#trading-widget', {
2 baseUrl: 'https://app.6mm.com',
3 auth: {
4 mode: 'partner-token',
5 tokenProvider: async ({ channelId, symbol, reason }) => {
6 const resp = await fetch('/api/trading/embed-token', {
7 method: 'POST',
8 credentials: 'include',
9 headers: { 'Content-Type': 'application/json' },
10 body: JSON.stringify({ channelId, symbol, reason }),
11 })
12
13 if (!resp.ok) {
14 throw new Error('Failed to request embed token')
15 }
16
17 return resp.json()
18 },
19 },
20})

Flusso backend

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 contratto

CampoRegiaDescrizione
channelIdSDK -> Backend partnerIdentificatore unico di sessione del widget. Il backend dovrebbe passarla a createEmbedToken.
SimboloSDK -> Backend partnerSimbolo di trading attualmente richiesto. Usalo per telescopiare il token quando necessario.
MotivoSDK -> Backend partnerPerché il SDK richiede un token, come il caricamento iniziale o l’aggiornamento.
embedTokenBackend partner -> SDKToken di breve durata creato dal Agent SDK o dall’Agente API.
expireAtBackend partner -> SDKTimestamp di scadenza del token restituito da 6MM.

Gestione dei guasti

CondizioniManipolazione consigliata
Sessione partner scadutaRestituisci il 401 dall’endpoint partner e chiedi all’utente di accedere di nuovo.
La creazione del token è fallita temporaneamenteInserisci un errore in tokenProvider e lascia che il widget mostri un errore di autenticazione.
channelId disallineamentoRifiuta la richiesta e ricrea l’istanza del widget.
L’utente non può commerciareRestituisci un errore controllato dal partner e non creare un token di incorporamento.

Modalità di compatibilità: agente-sso

agent-sso mantiene il vecchio flusso di ticket /agent-entry. Preferisci partner-token per le nuove integrazioni.

1const widget = TradingWidget.create('#trading-widget', {
2 baseUrl: 'https://app.6mm.com',
3 auth: {
4 mode: 'agent-sso',
5 entryUrlProvider: async ({ redirectPath }) => {
6 const resp = await fetch('/api/trading-entry', {
7 method: 'POST',
8 credentials: 'include',
9 headers: { 'Content-Type': 'application/json' },
10 body: JSON.stringify({ redirectPath }),
11 })
12 const data = await resp.json()
13 return data.webUrl
14 },
15 },
16})