מדריך אימות
למדו כיצד לבצע אימות עם Smart Money API באמצעות מפתחות API, אסימוני JWT ו-OAuth 2.0. אבטחו את האינטגרציות שלכם עם שיטות אימות תקניות ותרגולי אבטחה מומלצים.
סקירה כללית
Smart Money API תומך במספר שיטות אימות עבור מקרי שימוש שונים. בחרו את השיטה המתאימה ביותר לאינטגרציה שלכם:
מפתחות API (עיקרי): שלחו את המפתח שלכם ב X-API-Key כותרת הבקשה לכל קריאות REST API. זו השיטה המומלצת עבור בוטים ותקשורת שרת-לשרת.
אסימון JWT של סשן (גיבוי): סשנים בדפדפן/לוח מחוונים מבצעים אימות עם אסימון JWT דרך Authorization: Bearer, תקף ל-24 שעות. לקוחות תכנותיים צריכים להעדיף X-API-Key.
OAuth 2.0: אימות ברמת ארגון עבור יישומים מרובי משתמשים ואינטגרציות צד שלישי. משתמשים מאשרים ליישום שלכם גישה לנתונים שלהם.
כל בקשות API חייבות להתבצע דרך HTTPS. בקשות HTTP לא מוצפנות יידחו. בנוסף, לעולם אל תכניסו מפתחות API לבקרת גרסאות או תשתפו אותם בפומבי.
מפתחות API
מפתחות API הם פרטי גישה ייחודיים שהונפקו לחשבון שלכם. כל מפתח מייצג סט יחיד של הרשאות ומכסות. תוכלו ליצור מספר מפתחות עבור יישומים או סביבות שונים (פיתוח, בדיקות, production).
יצירת מפתח API
צרו מפתחות API ממסוף החשבון שלכם:
- נווטו אל Smart Money Console
- בחרו "מפתחות API" מהסרגל הצדדי
- לחצו על "צור מפתח חדש"
- בחרו סוג מפתח (פיתוח, בדיקות, production)
- הגדירו הגבלת קצב ותכונות
- העתיקו ושמרו את המפתח בצורה מאובטחת
שמרו את מפתח ה-API שלכם מיד! לא תוכלו לצפות בו שוב. אם תאבדו אותו, תצטרכו ליצור מפתח חדש.
פורמט המפתח
מפתחות API עוקבים אחר פורמט סטנדרטי:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
קידומות המפתח מציינות סביבה:
sk_live_ — מפתחות production עם מלוא המכסה
sk_test_ — מפתחות בדיקות עם מכסה מופחתת ונתוני פיתוח
sk_dev_ — מפתחות פיתוח אישיים עם נתוני ארגז חול
כותרת X-API-Key (עיקרי)
שלחו את מפתח ה-API שלכם ב X-API-Key כותרת הבקשה לכל בקשות API. לעולם אל תמקמו את המפתח שלכם ב-URL.
כותרת HTTP
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
לסשנים ארוכי טווח ותקשורת שרת-לשרת, החליפו את מפתח ה-API שלכם באסימון JWT. אסימוני JWT תקפים ל-24 שעות ומפחיתים את הצורך לאחסן את מפתח ה-API בקוד היישום.
קבלת אסימון JWT
שלחו את מפתח ה-API שלכם בכתובת ה-JWT כדי לקבל אסימון:
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
השתמשו באסימון JWT בכותרת Authorization בדיוק כמו מפתחות 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 מיועד ליישומים שצריכים לגשת למספר חשבונות משתמש. משתמשים מעניקים ליישום שלכם הרשאה לגשת לנתונים שלהם מבלי לשתף את מפתחות ה-API שלהם.
זרימת OAuth 2.0
Smart Money API תומך בזרימת Authorization Code עבור יישומי אינטרנט:
- המשתמש לוחץ על כפתור "התחבר עם Smart Money"
- הדפדפן מפנה לדף הרשאה
- המשתמש מעניק הרשאה ליישום שלכם
- הדפדפן מפנה בחזרה עם קוד הרשאה
- השרת שלכם מחליף את הקוד באסימון גישה
- כעת תוכלו לגשת לנתוני המשתמש בשמם
שלב 1: בקשת הרשאה
הפנו את המשתמש לכתובת ההרשאה:
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: החלפת אסימון
לאחר שהמשתמש מעניק הרשאה, החליפו את הקוד באסימון גישה:
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
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
שיטות אבטחה מומלצות
אחסון מפתחות בצורה מאובטחת
לעולם אל תכניסו מפתחות API לבקרת גרסאות, תקשרו אותם בקוד היישום או תשתפו אותם בתיעוד. השתמשו במשתני סביבה או בשירותי ניהול מפתחות מאובטחים כמו AWS Secrets Manager, HashiCorp Vault או דומים.
השתמשו ב-HTTPS בלבד
כל בקשות API חייבות להשתמש ב-HTTPS (TLS 1.2 ומעלה). בקשות HTTP יידחו. זה מבטיח שמפתח ה-API והנתונים שלכם מוצפנים במעבר.
הגבילו הרשאות מפתח
צרו מפתחות API נפרדים עבור יישומים וסביבות שונים. השתמשו בהיקפים כדי להגביל את הגישה של כל מפתח. אל תשתמשו במפתחות production בפיתוח.
עקבו אחר שימוש במפתחות
בדקו באופן קבוע את השימוש ב-API במסוף שלכם. הגדירו התראות לפעילות חריגה או למכסה המתקרבת להגבלה. מחקו מפתחות שאינכם משתמשים בהם עוד.
החלפת מפתחות
החליפו את מפתחות ה-API שלכם באופן קבוע כדי להפחית את הסיכון לפריצה. אנו ממליצים להחליף מפתחות כל 90 ימים:
- צרו מפתח API חדש במסוף שלכם
- עדכן את היישומים שלך לשימוש במפתח החדש
- בדוק שהכל עובד כראוי
- מחק את המפתח הישן מהקונסולה שלך
היקפים והרשאות
כשיוצרים מפתחות 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. צור חשבון וצור פרטי אימות בתוך דקות.
עבור לקונסולה