Passer à la navigation

Trading Widget Authentification

Utilisez le jeton de partenaire pour les nouvelles intégrations de trading intégrées SSO.

Afficher en Markdown

Mode recommandé : jeton partenaire

Partner-Token évite de mettre des jetons courts dans les URL et conserve apiSecret sur le backend du partenaire.

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()
},
},
})

Documentation associée

Flux back-end

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.

Contrat tokenProvider

ChampDirectionDescription
channelIdSDK -> Backend partenaireIdentificateur unique de session de widget. Le backend doit le transmettre à createEmbedToken.
symboleSDK -> Backend partenaireSymbole commercial actuel ou initial transmis comme contexte d’intégration ; il ne s’agit pas d’une restriction d’autorisation de paire de négociation de jetons.
raisonSDK -> Backend partenairePourquoi le SDK demande un jeton, tel qu’un chargement initial ou une actualisation.
embedTokenBackend partenaire -> SDKJeton de courte durée créé par le Agent SDK ou l’agent API.
expireAtBackend partenaire -> SDKHorodatage d’expiration du jeton renvoyé par 6MM.

Gestion des pannes

ConditionManipulation recommandée
Session partenaire expiréeRenvoyez 401 depuis le point de terminaison partenaire et demandez à l’utilisateur de se reconnecter.
La création du jeton a échoué temporairementGénère une erreur dans tokenProvider et permet au widget de faire apparaître une erreur d’authentification.
channelId incohérenceRejetez la demande et recréez l’instance de widget.
L’utilisateur n’est pas autorisé à échangerRenvoie une erreur contrôlée par le partenaire et ne crée pas de jeton d’intégration.

Mode de compatibilité : agent-sso

agent-sso conserve l’ancien flux de tickets /agent-entry. Préférez le jeton partenaire pour les nouvelles intégrations.

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
},
},
})

Règles d’échange de secondes et d’environnement

Pour les pages secondes, utilisez la même authentification partner-token avec page et tradingMode configurées sur le widget. Il n’existe pas de jeton de prédiction distinct. Chaque appel tokenProvider doit obtenir un nouveau jeton unique de votre backend.

Renvoie embedToken, expireAt en secondes Unix et l’original channelId en tant qu’objet de niveau supérieur. La réponse du jeton Agent SDK ne contient pas channelId ; votre backend fait écho au canal Widget actuel. Si votre point de terminaison encapsule les réponses dans data, déballez-le avant de revenir de tokenProvider.

Intégration en secondes complètes · Guide de l’environnement des fonds