Cum să preluați un token de autentificare WebSocket - Exemplu de cod în Python 3

Ultima actualizare: 1 aprilie 2025

Fluxurile private ale API-urilor noastre WebSocket (cum ar fi fluxul openOrders și fluxul addOrder) necesită un token de autentificare de la endpoint-ul REST API GetWebSocketsToken.

Urmează un exemplu de cod Python 3 pentru apelarea endpoint-ului REST API GetWebSocketsToken, analizarea răspunsului JSON și afișarea noului token de autentificare WebSocket:

#!/usr/bin/env python3

# Importă bibliotecile Python necesare
import time
import base64
import hashlib
import hmac
import urllib.request
import json

# Copiază/lipește cheia publică API și cheia privată API așa cum sunt afișate în gestionarea contului
api_key = 'COPY/PASTE API PUBLIC KEY HERE'
api_secret = 'COPY/PASTE API PRIVATE KEY HERE'

# Variabile (metoda API, nonce și date POST)
api_path = '/0/private/GetWebSocketsToken'
api_nonce = str(int(time.time()*1000))
api_post = 'nonce=' + api_nonce

# Algoritmi de hash criptografici
api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_post.encode('utf-8'))
api_hmac = hmac.new(base64.b64decode(api_secret), api_path.encode('utf-8') + api_sha256.digest(), hashlib.sha512)

# Codifică semnătura în format base64 utilizat în valoarea API-Sign
api_signature = base64.b64encode(api_hmac.digest())

# Cerere HTTP (POST)
api_request = urllib.request.Request('https://api.kraken.com/0/private/GetWebSocketsToken', api_post.encode('utf-8'))
api_request.add_header('API-Key', api_key)
api_request.add_header('API-Sign', api_signature)
api_response = urllib.request.urlopen(api_request).read().decode()

# Afișează răspunsul API
print(json.loads(api_response)['result']['token'])

Variabilele cheie publică/privată API (api_key și api_secret) ar trebui înlocuite cu o nouă cheie API din contul dumneavoastră Kraken, după care codul poate fi utilizat pentru a prelua un token de autentificare WebSocket pentru același cont. Rețineți că cheia API trebuie să aibă permisiunea Altele -> Access WebSockets API activată.

Ai nevoie de mai mult ajutor?