Trading Widget Autentikasi

Gunakan token-partner untuk integrasi SSO trading tertanam baru.

View as Markdown

partner-token menghindari menempatkan token pendek di URL dan menjaga apiSecret di backend mitra.

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

Alur 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.

kontrak tokenProvider

LapanganArahDeskripsi
channelIdSDK -> Backend MitraPengidentifikasi sesi widget unik. Backend seharusnya meneruskannya ke createEmbedToken.
simbolSDK -> Backend MitraSimbol perdagangan yang diminta saat ini. Gunakan untuk scope token saat dibutuhkan.
alasanSDK -> Backend MitraMengapa SDK meminta token, seperti pemuatan awal atau refresh.
embedTokenBackend mitra -> SDKToken berumur pendek yang dibuat oleh Agent SDK atau Agent API.
expireAtBackend mitra -> SDKCap waktu kedaluwarsa token dikembalikan oleh 6MM.

Penanganan kegagalan

KondisiPenanganan yang direkomendasikan
Sesi mitra telah kedaluwarsaKembalikan 401 dari endpoint mitra dan minta pengguna untuk masuk lagi.
Pembuatan token gagal sementaraMasukkan error ke tokenProvider dan biarkan widget muncul error autentikasi.
ketidakcocokan channelIdTolak permintaan dan buat ulang instance widget.
Pengguna tidak diperbolehkan untuk berdagangKembalikan error yang dikendalikan mitra dan jangan buat token embed.

Mode kompatibilitas: agent-sso

agent-sso mempertahankan alur tiket /agent-entry yang lebih lama. Pilih token-partner untuk integrasi baru.

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