คู่มือการยืนยันตัวตน
เรียนรู้วิธีการยืนยันตัวตนกับ Smart Money API โดยใช้ API keys, JWT tokens และ OAuth 2.0 ปรับใช้วิธีการยืนยันตัวตนมาตรฐานอุตสาหกรรมและแนวทางปฏิบัติที่ดีที่สุดเพื่อความปลอดภัย
ภาพรวม
Smart Money API รองรับวิธีการยืนยันตัวตนหลายรูปแบบสำหรับกรณีใช้งานที่แตกต่างกัน เลือกวิธีที่เหมาะกับการใช้งานของคุณ:
API Keys (หลัก): ส่งคีย์ของคุณใน X-API-Key ส่วนหัวของคำขอสำหรับการเรียกใช้ REST API ทั้งหมด นี่เป็นวิธีที่แนะนำสำหรับบอทและการใช้งานแบบ server-to-server
Session JWT (สำรอง): เซสชันเบราว์เซอร์/แดชบอร์ดจะยืนยันตัวตนด้วย session JWT ผ่าน Authorization: Bearer, มีอายุ 24 ชั่วโมง ไคลเอนต์แบบโปรแกรมควรใช้ X-API-Key.
OAuth 2.0: การยืนยันตัวตนระดับองค์กรสำหรับแอปพลิเคชันหลายผู้ใช้และการรวมระบบกับบุคคลที่สาม ผู้ใช้จะอนุญาตให้แอปของคุณเข้าถึงข้อมูลของพวกเขา
คำขอ API ทั้งหมดต้องทำผ่าน HTTPS คำขอ HTTP ที่ไม่เข้ารหัสจะถูกปฏิเสธ นอกจากนี้ ห้ามใส่ API keys ในระบบควบคุมเวอร์ชันหรือเผยแพร่公開
API Keys
API keys เป็นข้อมูลประจำตัวที่ไม่ซ้ำกันที่ออกให้กับบัญชีของคุณ แต่ละคีย์แสดงถึงชุดสิทธิ์และโควต้าที่กำหนด คุณสามารถสร้างคีย์หลายคีย์สำหรับแอปพลิเคชันหรือสภาพแวดล้อมที่แตกต่างกัน (development, staging, production)
การสร้าง API Key
สร้าง API keys จากคอนโซลบัญชีของคุณ:
- ไปที่ Smart Money Console
- เลือก "API Keys" จากแถบด้านข้าง
- คลิก "Generate New Key"
- เลือกประเภทคีย์ (Development, Staging, Production)
- กำหนดขีดจำกัดอัตราการใช้งานและฟีเจอร์
- คัดลอกและเก็บคีย์อย่างปลอดภัย
บันทึก API key ของคุณทันที! คุณจะไม่สามารถดูมันอีกครั้งได้ หากคุณสูญหาย คุณจะต้องสร้างคีย์ใหม่
รูปแบบคีย์
API keys มีรูปแบบมาตรฐานดังนี้:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
คำนำหน้าคีย์ระบุสภาพแวดล้อม:
sk_live_ — คีย์ production พร้อมโควต้าเต็ม
sk_test_ — คีย์ทดสอบพร้อมโควต้าลดลงและข้อมูล development
sk_dev_ — คีย์ development ส่วนบุคคลพร้อมข้อมูล sandbox
X-API-Key Header (หลัก)
ส่ง API key ของคุณในส่วนหัวคำขอ X-API-Key สำหรับคำขอ API ทั้งหมด ห้ามวางคีย์ของคุณใน URL
HTTP Header
GET /v1/whales/events HTTP/1.1
Host: api.smartmoneyapi.com
X-API-Key: sm_your_key
Content-Type: application/json
ตัวอย่าง cURL
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \
-H "X-API-Key: sm_your_key" \
-H "Content-Type: application/json"
ตัวอย่าง Python
import requests
api_key = "sm_your_key"
headers = {
"X-API-Key": api_key,
"Content-Type": "application/json"
}
response = requests.get(
"https://api.smartmoneyapi.com/v1/whales/events",
headers=headers
)
data = response.json()
การยืนยันตัวตนด้วย JWT Token
สำหรับเซสชันที่ใช้งานยาวนานและการสื่อสารแบบ server-to-server ให้แลก API key ของคุณเป็น JWT token JWT tokens มีอายุ 24 ชั่วโมงและลดความจำเป็นในการเก็บ API key ในโค้ดแอปพลิเคชัน
การรับ JWT Token
ส่ง API key ของคุณไปยัง endpoint JWT เพื่อรับ token:
curl -X POST https://api.smartmoneyapi.com/auth/jwt \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m"
}'
การตอบสนอง JWT
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 86400,
"token_type": "Bearer"
}
การใช้ JWT Token
ใช้ JWT token ในส่วนหัว Authorization เหมือนกับ API keys:
import requests
import json
from datetime import datetime, timedelta
class JWTAuth:
def __init__(self, api_key):
self.api_key = api_key
self.token = None
self.token_expires = None
def get_valid_token(self):
# Check if current token is still valid
if self.token and self.token_expires > datetime.now():
return self.token
# Get new token
response = requests.post(
"https://api.smartmoneyapi.com/auth/jwt",
json={"api_key": self.api_key}
)
data = response.json()
self.token = data["token"]
self.token_expires = datetime.now() + timedelta(seconds=data["expires_in"])
return self.token
def request(self, method, url, **kwargs):
token = self.get_valid_token()
headers = kwargs.get("headers", {})
headers["Authorization"] = f"Bearer {token}"
kwargs["headers"] = headers
return requests.request(method, url, **kwargs)
# Usage
auth = JWTAuth("sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m")
response = auth.request(
"GET",
"https://api.smartmoneyapi.com/v1/whales/events"
)
print(response.json())
OAuth 2.0
OAuth 2.0 สำหรับแอปพลิเคชันที่ต้องการเข้าถึงบัญชีผู้ใช้หลายราย ผู้ใช้จะอนุญาตให้แอปของคุณเข้าถึงข้อมูลของพวกเขาโดยไม่ต้องแบ่งปัน API keys
กระบวนการ OAuth 2.0
Smart Money API รองรับกระบวนการ Authorization Code สำหรับแอปพลิเคชันเว็บ:
- ผู้ใช้คลิกปุ่ม "Connect with Smart Money"
- เบราว์เซอร์เปลี่ยนเส้นทางไปยังหน้าอนุญาต
- ผู้ใช้ให้สิทธิ์แอปพลิเคชันของคุณ
- เบราว์เซอร์เปลี่ยนเส้นทางกลับพร้อมรหัสอนุญาต
- ระบบหลังบ้านของคุณแลกเปลี่ยนรหัสเป็น access token
- ตอนนี้คุณสามารถเข้าถึงข้อมูลผู้ใช้ในนามของพวกเขาได้
ขั้นตอนที่ 1: คำขออนุญาต
เปลี่ยนเส้นทางผู้ใช้ไปยัง endpoint อนุญาต:
https://auth.smartmoneyapi.com/authorize?
client_id=YOUR_CLIENT_ID&
redirect_uri=https://yourapp.com/callback&
response_type=code&
scope=whale_positions+funding_rates+liquidations&
state=random_state_string
ขั้นตอนที่ 2: การแลกเปลี่ยน Token
หลังจากผู้ใช้ให้สิทธิ์แล้ว ให้แลกเปลี่ยนรหัสเป็น access token:
curl -X POST https://auth.smartmoneyapi.com/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&code=AUTH_CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=https://yourapp.com/callback"
การตอบสนอง OAuth Token
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
แนวทางปฏิบัติด้านความปลอดภัย
เก็บคีย์อย่างปลอดภัย
ห้ามใส่ API keys ในระบบควบคุมเวอร์ชัน เขียนโค้ดลงในแอปพลิเคชัน หรือแบ่งปันในเอกสาร ใช้ตัวแปรสภาพแวดล้อมหรือบริการจัดการคีย์ที่ปลอดภัยเช่น AWS Secrets Manager, HashiCorp Vault หรือที่คล้ายกัน
ใช้ HTTPS เท่านั้น
คำขอ API ทั้งหมดต้องใช้ HTTPS (TLS 1.2 หรือสูงกว่า) คำขอ HTTP จะถูกปฏิเสธ เพื่อให้แน่ใจว่า API key และข้อมูลของคุณถูกเข้ารหัสระหว่างการส่ง
จำกัดสิทธิ์คีย์
สร้าง API keys แยกสำหรับแอปพลิเคชันและสภาพแวดล้อมที่แตกต่างกัน ใช้ขอบเขตเพื่อจำกัดสิ่งที่แต่ละคีย์สามารถเข้าถึงได้ ห้ามใช้คีย์ production ใน development
ตรวจสอบการใช้งานคีย์
ตรวจสอบการใช้งาน API ในคอนโซลของคุณเป็นประจำ ตั้งค่าการแจ้งเตือนสำหรับกิจกรรมผิดปกติหรือโควต้าใกล้ถึงขีดจำกัด ลบคีย์ที่คุณไม่ได้ใช้งานแล้ว
การหมุนคีย์
หมุน API keys ของคุณเป็นประจำเพื่อลดความเสี่ยงจากการถูกโจมตี เราขอแนะนำให้หมุนคีย์ทุก 90 วัน:
- สร้าง API key ใหม่ในคอนโซลของคุณ
- อัปเดตแอปพลิเคชันของคุณเพื่อใช้คีย์ใหม่
- ทดสอบว่าทุกอย่างทำงานถูกต้อง
- ลบคีย์เก่าออกจากคอนโซลของคุณ
ขอบเขตและสิทธิ์
เมื่อสร้างคีย์ API หรือใช้ OAuth ระบุว่าคีย์ของคุณสามารถเข้าถึงทรัพยากรใดได้บ้าง:
| ขอบเขต |
คำอธิบาย |
ระดับ |
| whale_positions |
อ่านตำแหน่งกระเป๋าเงินของวาฬ |
Trader+ |
| funding_rates |
อ่านข้อมูลอัตราเงินทุน |
Free+ |
| liquidations |
อ่านฟีดการล้างพอร์ต |
Free+ |
| open_interest |
อ่านข้อมูลความสนใจเปิด |
Trader+ |
| confirmation_scores |
อ่านคะแนนยืนยัน AI |
Pro+ |
| on_chain |
อ่านเมตริกบนเชน |
Pro+ |
ตัวอย่างโค้ดการยืนยันตัวตน
การรวม Python แบบสมบูรณ์
import requests
from typing import Optional, Dict
from datetime import datetime, timedelta
class SmartMoneyAuth:
"""Handles all authentication methods for Smart Money API"""
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = "https://api.smartmoneyapi.com"
self.jwt_token = None
self.jwt_expires = None
def get_jwt_token(self) -> str:
"""Get or refresh JWT token"""
if self.jwt_token and self.jwt_expires > datetime.now():
return self.jwt_token
response = requests.post(
f"{self.base_url}/auth/jwt",
json={"api_key": self.api_key}
)
data = response.json()
self.jwt_token = data["token"]
self.jwt_expires = datetime.now() + timedelta(seconds=data["expires_in"] - 300)
return self.jwt_token
def headers_bearer(self) -> Dict:
"""Get headers for Bearer token auth"""
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def headers_jwt(self) -> Dict:
"""Get headers for JWT auth"""
token = self.get_jwt_token()
return {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
def request(self, method: str, endpoint: str, use_jwt: bool = False, **kwargs) -> Dict:
"""Make authenticated request"""
headers = self.headers_jwt() if use_jwt else self.headers_bearer()
response = requests.request(
method,
f"{self.base_url}{endpoint}",
headers=headers,
**kwargs
)
return response.json()
# Usage
auth = SmartMoneyAuth("sk_live_abc123xyz789")
# Bearer token method
whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT")
# JWT method (auto-refreshing)
whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True)
print(f"Found {whales['data']['total']} whale positions")
ต้องการความช่วยเหลือ?
ตรวจสอบเอกสาร API ของเราหรือติดต่อฝ่ายสนับสนุนหากคุณต้องการความช่วยเหลือเกี่ยวกับการยืนยันตัวตน
เอกสารอ้างอิง API
สร้างคีย์ API ตัวแรกของคุณ
เริ่มต้นใช้งาน Smart Money API สร้างบัญชีและสร้างข้อมูลรับรองการยืนยันตัวตนได้ในไม่กี่นาที
ไปที่คอนโซล