Trading Widget Autenticação

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

Ver como Markdown

Partner-token evita colocar tokens curtos em 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 de 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

CampoDireçãoDescrição
channelIdSDK -> Backend parceiroIdentificador único de sessão de widget. O backend deve passar para createEmbedToken.
SímboloSDK -> Backend parceiroSímbolo de negociação solicitado atualmente. Use para usar o escopo do token quando necessário.
MotivoSDK -> Backend parceiroPor que o SDK está solicitando 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 de tempo de expiração do token devolvido por 6MM.

Manuseio de falhas

CondiçãoManuseio recomendado
Sessão de parceiros expiradaDevolva o 401 do endpoint parceiro e peça para o usuário fazer login novamente.
A criação do token falhou temporariamenteColoque um erro em tokenProvider e permita que o widget mostre um erro de autenticação.
channelId descompassoRejeite a solicitação e recrie a instância do widget.
O usuário não pode negociarDevolva um erro controlado pelo parceiro e não crie um token embed.

Modo de compatibilidade: agente-sso

Agent-SSO mantém o fluxo antigo de tickets /agent-entry. Prefira o 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})