Trading Widget Έλεγχος ταυτότητας

Χρησιμοποιήστε το partner-token για νέες ενσωματωμένες ενσωματώσεις SSO συναλλαγών.

Προβολή ως Markdown

Το partner-token αποφεύγει την τοποθέτηση σύντομων διακριτικών σε διευθύνσεις URL και διατηρεί apiSecret στο backend του συνεργάτη.

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

Ροή 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 σύμβαση

ΠεδίοΚατεύθυνσηΠεριγραφή
channelIdSDK -> Υποστήριξη συνεργάτηΜοναδικό αναγνωριστικό περιόδου λειτουργίας widget. Το backend πρέπει να το περάσει στο createEmbedToken.
σύμβολοSDK -> Υποστήριξη συνεργάτηΤρέχον ζητούμενο σύμβολο συναλλαγών. Χρησιμοποιήστε το για να περιορίσετε το διακριτικό όταν χρειάζεται.
ΑιτιολογίαSDK -> Υποστήριξη συνεργάτηΓιατί το SDK ζητά ένα διακριτικό, όπως αρχική φόρτωση ή ανανέωση.
embedTokenΥποστήριξη συνεργάτη -> SDKΒραχύβιο διακριτικό που δημιουργήθηκε από το Agent SDK ή το Agent API.
expireAtΥποστήριξη συνεργάτη -> SDKΗ χρονική σήμανση λήξης του διακριτικού επιστράφηκε από 6MM.

Χειρισμός βλαβών

ΚατάστασηΣυνιστώμενος χειρισμός
Η περίοδος λειτουργίας συνεργάτη έληξεΕπιστρέψτε το 401 από το τελικό σημείο συνεργάτη και ζητήστε από το χρήστη να εισέλθει ξανά.
Η δημιουργία διακριτικού απέτυχε προσωρινάΡίξτε ένα σφάλμα στο tokenProvider και αφήστε το γραφικό στοιχείο να εμφανίσει ένα σφάλμα ελέγχου ταυτότητας.
channelId αναντιστοιχίαΑπορρίψτε το αίτημα και δημιουργήστε ξανά την παρουσία του γραφικού στοιχείου.
Ο χρήστης δεν επιτρέπεται να συναλλάσσεταιΕπιστρέψτε ένα σφάλμα που ελέγχεται από τον συνεργάτη και μην δημιουργήσετε ένα διακριτικό ενσωμάτωσης.

Λειτουργία συμβατότητας: agent-sso

Το Agent-SSO διατηρεί τη ροή παλαιότερων εισιτηρίων /Agent-Entry. Προτιμήστε το partner-token για νέες ενσωματώσεις.

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