Trading Widget Autenticação

Use o partner-token para novas integrações de negociação SSO integrações.

Ver como Markdown

O partner-token evita colocar tokens curtos nas URLs e mantém apiSecret no backend do parceiro.

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

Fluxo 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 contrato

CampoRealizaçãoDescrição
channelIdSDK -> Backend parceiroIdentificador único de sessão de widget. O backend deve passá-lo para createEmbedToken.
SímboloSDK -> Backend parceiroSímbolo de troca solicitado atualmente. Usa-o para usar o escopo do token quando necessário.
RazãoSDK -> Backend parceiroPorque é que o SDK está a pedir um token, como carregamento inicial ou atualização.
embedTokenBackend parceiro -> SDKToken de curta duração criado pelo Agent SDK ou Agente API.
expireAtBackend parceiro -> SDKO carimbo temporal de expiração do token devolvido por 6MM.

Gestão de falhas

CondiçãoManuseamento recomendado
Sessão de parceiros expiradaDevolva o 401 do endpoint parceiro e peça ao utilizador para iniciar sessão novamente.
A criação do token falhou temporariamenteColoque um erro no tokenProvider e permita que o widget mostre um erro de autenticação.
channelId desajusteRejeita o pedido e recria a instância do widget.
O utilizador não pode negociarDevolva um erro controlado pelo parceiro e não crie um token de incorporação.

Modo de compatibilidade: agente-sso

Agent-SSO mantém o fluxo antigo de bilhetes /agent-entry. Prefiro partner-token para novas integrações.

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