Trading Widget Authentification

Utilisez partner-token pour de nouvelles intégrations de trading SSO intégrées.

Afficher en Markdown

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

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})
  • Créer un jeton d’insertion : exemple d’émission de jeton en arrière-plan.
  • [Trading Widget Démarrage rapide] (/sdk/trading-widget/quick-start) : flux d’initialisation complet.
  • Secrets & Signature : gardez les identifiants d’agent privilégiés en arrière-plan.
  • Dépannage : diagnostiquer les échecs de session, de jeton, d’origine et d’initialisation.

Flux 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 contrat

TerrainRéalisationDescription
channelIdSDK -> Partenaire backendIdentifiant unique de session du widget. Le backend devrait le transmettre à createEmbedToken.
SymboleSDK -> Partenaire backendSymbole de trading actuellement demandé. Utilisez-le pour lunôner le jeton quand c’est nécessaire.
RaisonSDK -> Partenaire backendPourquoi le SDK demande un jeton, comme le chargement initial ou le rafraîchissement ?
embedTokenPartenaire backend -> SDKJeton éphémère créé par le Agent SDK ou l’Agent API.
expireAtPartenaire backend -> SDKL’horodatage d’expiration du jeton est retourné par 6MM.

Gestion des pannes

ÉtatManipulation recommandée
Session partenaire expiréeRetournez le 401 depuis le point de terminaison partenaire et demandez à l’utilisateur de se reconnecter.
Échec temporaire de la création de jetonAjoutez une erreur dans tokenProvider et laissez le widget afficher une erreur d’authentification.
channelId décalageRejetez la requête et recréez l’instance du widget.
L’utilisateur n’a pas le droit de traderRetournez une erreur contrôlée par le partenaire et ne créez pas de jeton d’intégration.

Mode de compatibilité : agent-sso

Agent-SSO conserve l’ancien flux de tickets /agent-entry. Privilégiez le partner-token pour les nouvelles intégrations.

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