Trading Widget Doğrulama

Yeni gömülü ticaret SSO entegrasyonlar için partner-token kullanın.

Markdown olarak görüntüle

partner-token, URL’lerde kısa tokenlar koymaktan kaçınır ve apiSecret partner backend’de tutar.

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

Arka uç akışı

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 sözleşmesi

SahaYönetmenTanım
channelIdSDK -> Partner backendBenzersiz widget oturum tanımlayıcısı. Arka uç bunu createEmbedTokenile paylaşmalıdır.
sembolSDK -> Partner backendMevcut talep edilen işlem sembolü. Gerekirse tokenı kapsam alanı için kullanın.
SebepSDK -> Partner backendNeden SDK token talep ediyor, örneğin ilk yükleme veya yenileme gibi.
embedTokenPartner backend -> SDKAgent SDK veya Ajan tarafından oluşturulan kısa ömürlü tokenAPI.
expireAtPartner backend -> SDKToken son kullanma zaman damgası 6MMtarafından döndürüldü.

Arıza yönetimi

DurumÖnerilen kullanım
Partner oturumu sona erdiPartner uç noktasından 401’i geri gönderin ve kullanıcıya tekrar giriş yapmasını isteyin.
Token oluşturma geçici olarak başarısız oldutokenProvider içine bir hata atıp widget’ın kimlik doğrulama hatası ortaya çıkarmasına izin verin.
channelId uyumsuzluğuİsteği reddedin ve widget örneğini yeniden oluşturun.
Kullanıcının işlem yapmasına izin verilmezOrtak kontrolündeki bir hata döndürün ve gömülü token oluşturmayın.

Uyumluluk modu: agent-sso

Agent-SSO eski /agent-entry bilet akışını korur. Yeni entegrasyonlar için partner-token tercih edin.

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