Authenticated endpoints require three HTTP headers:
x-user-api-key
Khóa công khai của token API của bạn
x-user-api-timestamp
Unix timestamp 13 chữ số tính bằng mili giây
x-user-api-signature
Chữ ký HMAC-SHA256 dạng hex chữ thường
Payload chữ ký
Chữ ký được tính bằng cách nối các giá trị sau bằng ký tự xuống dòng:
<HTTP_METHOD>
<đường dẫn yêu cầu>
<chuỗi query thô (không gồm ?)>
<x-user-api-timestamp>
<sha256 hex của phần thân yêu cầu thô>
Quy tắc phạm vi
read
Chỉ các yêu cầu GET và HEAD
read_write
Các yêu cầu GET, POST, PATCH và DELETE
Mã lỗi
401 UNAUTHORIZED
Thông tin xác thực không hợp lệ hoặc bị thiếu
401 INVALID_SIGNATURE
Xác minh chữ ký HMAC thất bại
401 INVALID_TIMESTAMP
Timestamp của yêu cầu nằm ngoài cửa sổ 5 phút
403 INSUFFICIENT_SCOPE
Token thiếu phạm vi cần thiết cho thao tác này
403 IP_NOT_ALLOWED
IP của yêu cầu không có trong danh sách IP được phép của token
409 USER_ALIAS_REQUIRED
Người dùng phải tạo alias mặc định trước
Ví dụ mã (JavaScript)
const crypto = require('crypto');
function signRequest(method, path, queryString, body, timestamp, secret) {
const payload = [
method.toUpperCase(),
path,
queryString || '',
timestamp,
crypto.createHash('sha256').update(body || '').digest('hex')
].join('\n');
return crypto.createHmac('sha256', secret)
.update(payload)
.digest('hex');
}
const timestamp = Date.now().toString();
const signature = signRequest('GET', '/v1/me', '', '', timestamp, 'your-secret');