Ghid de Autentificare
Aflați cum să vă autentificați cu Smart Money API folosind chei API, token-uri JWT și OAuth 2.0. Securizați-vă integrările cu metode de autentificare standard și practici recomandate.
Prezentare generală
Smart Money API acceptă mai multe metode de autentificare pentru diferite cazuri de utilizare. Alegeți metoda care se potrivește cel mai bine integrării dumneavoastră:
Chei API (primar): Trimiteți cheia în antetul X-API-Key pentru toate apelurile API REST. Aceasta este metoda recomandată pentru boturi și utilizare server-to-server.
Sesiune JWT (de rezervă): Sesiunile din browser/tablou de bord se autentifică cu un JWT de sesiune prin Authorization: Bearer, valabil pentru 24 de ore. Clienții programatici ar trebui să prefere X-API-Key.
OAuth 2.0: Autentificare de nivel enterprise pentru aplicații multi-utilizator și integrări terțe. Utilizatorii autorizează aplicația dumneavoastră să acceseze datele lor.
Toate cererile API trebuie să fie făcute prin HTTPS. Cererile HTTP necriptate vor fi respinse. În plus, nu comiteți niciodată cheile API în controlul versiunilor și nu le partajați public.
Chei API
Cheile API sunt credențiale unice emise pentru contul dumneavoastră. Fiecare cheie reprezintă un singur set de permisiuni și cote. Puteți genera mai multe chei pentru diferite aplicații sau medii (dezvoltare, staging, producție).
Generarea unei chei API
Generați chei API din consola contului dumneavoastră:
- Navigați la Smart Money Console
- Selectați "Chei API" din bara laterală
- Faceți clic pe "Generați cheie nouă"
- Alegeți tipul cheii (Dezvoltare, Staging, Producție)
- Setați limita de rată și funcțiile
- Copiați și stocați cheia în siguranță
Salvați cheia API imediat! Nu o veți mai putea vizualiza din nou. Dacă o pierdeți, va trebui să generați o cheie nouă.
Formatul cheii
Cheile API urmează un format standard:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
Prefixele cheilor indică mediul:
sk_live_ — Chei de producție cu cotă completă
sk_test_ — Chei de testare cu cotă redusă și date de dezvoltare
sk_dev_ — Chei de dezvoltare personală cu date sandbox
Antet X-API-Key (primar)
Trimiteți cheia API în antetul X-API-Key pentru toate cererile API. Nu plasați niciodată cheia într-un URL.
Antet HTTP
GET /v1/whales/events HTTP/1.1
Host: api.smartmoneyapi.com
X-API-Key: sm_your_key
Content-Type: application/json
Exemplu cURL
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \
-H "X-API-Key: sm_your_key" \
-H "Content-Type: application/json"
Exemplu 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()
Autentificare cu token JWT
Pentru sesiuni de lungă durată și comunicare server-to-server, schimbați cheia API cu un token JWT. Token-urile JWT durează 24 de ore și reduc necesitatea de a stoca cheia API în codul aplicației.
Obținerea unui token JWT
Trimiteți cheia API prin POST la endpoint-ul JWT pentru a obține un token:
curl -X POST https://api.smartmoneyapi.com/auth/jwt \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m"
}'
Răspuns JWT
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 86400,
"token_type": "Bearer"
}
Utilizarea token-ului JWT
Utilizați token-ul JWT în antetul Authorization la fel ca cheile API:
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 este pentru aplicații care trebuie să acceseze mai multe conturi de utilizator. Utilizatorii acordă aplicației dumneavoastră permisiunea de a accesa datele lor fără a partaja cheile API.
Flux OAuth 2.0
Smart Money API acceptă fluxul Authorization Code pentru aplicații web:
- Utilizatorul face clic pe butonul "Conectează-te cu Smart Money"
- Browserul redirecționează către pagina de autorizare
- Utilizatorul acordă permisiunea aplicației dumneavoastră
- Browserul redirecționează înapoi cu un cod de autorizare
- Backend-ul dumneavoastră schimbă codul pentru un token de acces
- Acum puteți accesa datele utilizatorului în numele lor
Pasul 1: Cerere de autorizare
Redirecționați utilizatorul către endpoint-ul de autorizare:
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
Pasul 2: Schimb de token
După ce utilizatorul acordă permisiunea, schimbați codul pentru un token de acces:
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"
Răspuns OAuth Token
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
Practici de securitate recomandate
Stocați cheile în siguranță
Nu comiteți niciodată cheile API în controlul versiunilor, nu le hardcodați în aplicații sau nu le partajați în documentație. Utilizați variabile de mediu sau servicii de gestionare a cheilor securizate precum AWS Secrets Manager, HashiCorp Vault sau similar.
Utilizați doar HTTPS
Toate cererile API trebuie să folosească HTTPS (TLS 1.2 sau mai mare). Cererile HTTP vor fi respinse. Acest lucru asigură că cheia API și datele dumneavoastră sunt criptate în tranzit.
Limitați permisiunile cheilor
Creați chei API separate pentru diferite aplicații și medii. Utilizați domenii de aplicare pentru a limita ce poate accesa fiecare cheie. Nu utilizați chei de producție în dezvoltare.
Monitorizați utilizarea cheilor
Revizuiți în mod regulat utilizarea API în consola dumneavoastră. Configurați alerte pentru activitate neobișnuită sau când cota se apropie de limite. Ștergeți cheile pe care nu le mai utilizați.
Rotația cheilor
Rotați-vă cheile API în mod regulat pentru a reduce riscul de compromitere. Recomandăm rotirea cheilor la fiecare 90 de zile:
- Generați o cheie API nouă în consola dumneavoastră
- Actualizați aplicațiile pentru a utiliza noua cheie
- Testați dacă totul funcționează corect
- Ștergeți cheia veche din consolă
Domenii de aplicare și permisiuni
Când creați chei API sau utilizați OAuth, specificați ce resurse poate accesa cheia dumneavoastră:
| Domeniu de aplicare |
Descriere |
Nivel |
| whale_positions |
Citirea pozițiilor portofelului balenelor |
Trader+ |
| funding_rates |
Citirea datelor despre ratele de finanțare |
Free+ |
| liquidations |
Citirea fluxurilor de lichidare |
Free+ |
| open_interest |
Citirea datelor despre interesul deschis |
Trader+ |
| confirmation_scores |
Citirea scorurilor de confirmare AI |
Pro+ |
| on_chain |
Citirea metricilor on-chain |
Pro+ |
Exemple de cod de autentificare
Integrare completă Python
import requests
from typing import Optional, Dict
from datetime import datetime, timedelta
class SmartMoneyAuth:
"""Gestionează toate metodele de autentificare pentru 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:
"""Obțineți sau reîmprospătați tokenul JWT"""
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:
"""Obțineți antete pentru autentificarea cu token Bearer"""
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def headers_jwt(self) -> Dict:
"""Obțineți antete pentru autentificarea cu JWT"""
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:
"""Efectuați o cerere autentificată"""
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()
# Utilizare
auth = SmartMoneyAuth("sk_live_abc123xyz789")
# Metoda token Bearer
whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT")
# Metoda JWT (reîmprospătare automată)
whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True)
print(f"Found {whales['data']['total']} whale positions")
Aveți nevoie de ajutor?
Consultați documentația noastră API sau contactați asistența dacă aveți nevoie de ajutor cu autentificarea.
Referință API
Generați prima cheie API
Începeți cu Smart Money API. Creați-vă contul și generați credențiale de autentificare în câteva minute.
Accesați Consola