Skip to navigation

Trading Widget Xác thực

Sử dụng mã thông báo đối tác để tích hợp giao dịch nhúng SSO mới.

View as Markdown

Chế độ được đề xuất: mã thông báo đối tác

mã thông báo đối tác tránh đặt mã thông báo ngắn vào URL và giữ apiSecret trên phần phụ trợ của đối tác.

const widget = TradingWidget.create('#trading-widget', {
baseUrl: 'https://app.6mm.com',
auth: {
mode: 'partner-token',
tokenProvider: async ({ channelId, symbol, reason }) => {
const resp = await fetch('/api/trading/embed-token', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ channelId, symbol, reason }),
})
if (!resp.ok) {
throw new Error('Failed to request embed token')
}
return resp.json()
},
},
})

Tài liệu liên quan

Luồng phụ trợ

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 hợp đồng

Cánh đồngPhương hướngSự miêu tả
channelIdSDK -> Phần phụ trợ của đối tácMã định danh phiên tiện ích duy nhất. Phần phụ trợ sẽ chuyển nó tới createEmbedToken.
biểu tượngSDK -> Phần phụ trợ của đối tácBiểu tượng giao dịch hiện tại hoặc ban đầu được chuyển làm bối cảnh tích hợp; nó không phải là một hạn chế cho phép cặp giao dịch mã thông báo.
lý doSDK -> Phần phụ trợ của đối tácTại sao SDK lại yêu cầu mã thông báo, chẳng hạn như tải lần đầu hoặc làm mới.
embedTokenPhần phụ trợ của đối tác -> SDKMã thông báo tồn tại trong thời gian ngắn được tạo bởi Agent SDK hoặc Đại lý API.
expireAtPhần phụ trợ của đối tác -> SDKDấu thời gian hết hạn mã thông báo được trả về bởi 6MM.

Xử lý lỗi

Tình trạngĐề xuất xử lý
Phiên đối tác đã hết hạnTrả về 401 từ điểm cuối của đối tác và yêu cầu người dùng đăng nhập lại.
Tạo mã thông báo tạm thời không thành côngĐưa ra lỗi trong tokenProvider và cho phép tiện ích hiển thị lỗi xác thực.
channelId không khớpTừ chối yêu cầu và tạo lại phiên bản widget.
Người dùng không được phép giao dịchTrả về lỗi do đối tác kiểm soát và không tạo mã thông báo nhúng.

Chế độ tương thích: Agent-sso

Agent-sso giữ luồng vé /agent-entry cũ hơn. Ưu tiên mã thông báo đối tác cho các tích hợp mới.

const widget = TradingWidget.create('#trading-widget', {
baseUrl: 'https://app.6mm.com',
auth: {
mode: 'agent-sso',
entryUrlProvider: async ({ redirectPath }) => {
const resp = await fetch('/api/trading-entry', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ redirectPath }),
})
const data = await resp.json()
return data.webUrl
},
},
})

Giao dịch giây và quy tắc môi trường

Đối với các trang giây, hãy sử dụng cùng một xác thực partner-token với page và tradingMode được định cấu hình trên Widget. Không có mã thông báo dự đoán riêng biệt. Mỗi cuộc gọi tokenProvider phải nhận được mã thông báo một lần mới từ chương trình phụ trợ của bạn.

Trả về embedToken, expireAt trong vài giây Unix và channelId ban đầu làm đối tượng cấp cao nhất. Phản hồi mã thông báo Agent SDK không chứa channelId; phần phụ trợ của bạn lặp lại kênh Widget hiện tại. Nếu điểm cuối của bạn gói các phản hồi trong data, hãy mở gói đó trước khi quay lại từ tokenProvider.

Tích hợp đầy đủ giây · Hướng dẫn về môi trường quỹ