Bu makalede API’ımızdaki kimlik belirleme ile ilgili detaylara değineceğiz. Bu örnek için Python kullanacağı.z

Daha fazla için tüm API documentation ve bizim GitHub’daki örnek kodlarımız‘a bakın.

Genel Bakış

API’ımıza bağlamanız gereken ilk şeyler, API anahtarınız ve sizin gizli anahtarınız, bunlara makale boyuna api ve secret olarak değinilecek. Bir çift anahtarınızı buradan https://ftx.com/profile oluşturabilirsiniz

Talebiniz aşağıdaki başlıkları bulundurmalıdır.

1.FTX-KEY: API anahtarınızdır.

2.FTX-TS: Epoch devrinden beri olan milisaniyelerin sayısıdır.

3.FTX-SIGN: Takip eden dört dizimizin SHA256 HMAC’ıdır, API secret’ınızı hex dizisi olarak kullanır: Zaman damgası (yukarıdakiyle aynı şekilde), büyük harflerle (örn. GET ya da POST gibi) HTTP metodu talep edin, Önünde slash çizgisi(/) ve herhangi bir hostname içermeyen URL parameteri içeren(örn. /account) bir yol talep edin, sadece POST talepleri için bir gövde (JSON-encoded) talep edin.

4.FTX-SUBACCOUNT(isteğe bağlı): Kullandığınız alt hesabın URI-encoded ismi. Eğer alt hesap kullanmıyorsanız bunu görmezden gelin.

Tüm kod şöyle gözükmelidir:

import time
import hmac
from requests import Request

ts = int(time.time() * 1000)
request = Request('GET', '<api_endpoint>')
prepared = request.prepare()
signature_payload = f'{ts}{prepared.method}{prepared.path_url}'
if prepared.body:
    signature_payload += prepared.body
signature_payload = signature_payload.encode()
signature = hmac.new('YOUR_API_SECRET'.encode(), signature_payload, 'sha256').hexdigest()

request.headers['FTX-KEY'] = 'YOUR_API_KEY'
request.headers['FTX-SIGN'] = signature
request.headers['FTX-TS'] = str(ts)

# Bu satırı sadece alt hesaba ulaşmak istiyorsanız dahil edin. Eğer özel karakterler içeriyorsa alt hesap isminizi URI-kodlamayı unutmayın!

#request.headers['FTX-SUBACCOUNT'] = urllib.parse.quote('my_subaccount_name')

GET özel örneği

GET/markets talebinin nasıl gözüktüğüne dair detaylara göz atalım, bu örnek için aşağıdaki API anahtarlarını kullanacağız:

api = "LR0RQT6bKjrUNh38eCw9jYC89VDAbRkCogAc_XAm"
secret = "T4lPid48QtjNxjLUFOcUZghD7CUJ7sTVsfuvQZF2"

Ayrıca aşağıdaki zaman damgasını kullanacağız:

ts = 1588591511721
signature_payload = b'1588591511721GET/api/markets'
signature = "dbc62ec300b2624c580611858d94f2332ac636bb86eccfa1167a7777c496ee6f"

POST özel örneği

Bu örnekte aynı API anahtarlarını kullanarak POST/orders kısmının nasıl gözükeceğine göz atacağız. Diyelim ki $8500 dolardan giden BTC-PERP’deki 1 BTC için satın alma siparişi limiti koymak istiyoruz.

ts = 1588591856950
signature_payload = b'1588591856950POST/api/orders{"market": "BTC-PERP", "side": "buy", "price": 8500, "size": 1, "type": "limit", "reduceOnly": false, "ioc": false, "postOnly": false, "clientId": null}'
signature = "c4fbabaf178658a59d7bbf57678d44c369382f3da29138f04cd46d3d582ba4ba"

İmzada gömülü post gövdesindeki bağımsız değişkenlerin sırasının önemli olduğunu lütfen unutmayın: ** post gövdesinin sırasıyla eşleşmelidir**

Giriş yapılamadı hatası

Eğere giriş yapılamadı hatası ile karşılaşıyorsanız, bu demek oluyor ki kimlik belirleme başarısız olmuştur. Bu durumda, yukarıdaki örneği referans alarak kodunuzun doğru olduğundan emin olun ve ayrıca aşağıdaki endpoint’i kullanarak zaman damganıza karşın serverımızınkini karşılaştırın. https://otc.ftx.com/api/time



Sam Bankman-Fried