Comment récupérer un jeton d'authentification WebSocket - Exemple de code en Python 3

Dernière mise à jour : 1 avr. 2025

Les flux privés de nos API WebSocket (tels que le flux openOrders et le flux addOrder) nécessitent un jeton d'authentification de l'endpoint GetWebSocketsToken de l'API REST.

Voici un exemple de code Python 3 pour appeler l'endpoint GetWebSocketsToken de l'API REST, analyser la réponse JSON et afficher le nouveau jeton d'authentification WebSocket :

#!/usr/bin/env python3

# Import required Python libraries
import time
import base64
import hashlib
import hmac
import urllib.request
import json

# Copy/paste API public key and API private key as displayed in account management
api_key = 'COPY/PASTE API PUBLIC KEY HERE'
api_secret = 'COPY/PASTE API PRIVATE KEY HERE'

# Variables (API method, nonce, and POST data)
api_path = '/0/private/GetWebSocketsToken'
api_nonce = str(int(time.time()*1000))
api_post = 'nonce=' + api_nonce

# Cryptographic hash algorithms
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)

# Encode signature into base64 format used in API-Sign value
api_signature = base64.b64encode(api_hmac.digest())

# HTTP request (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()

# Output API response
print(json.loads(api_response)['result']['token'])

Les variables de clé API publique/privée (api_key et api_secret) doivent être remplacées par une nouvelle clé API de votre compte Kraken, après quoi le code pourra être utilisé pour récupérer un jeton d'authentification WebSocket pour le même compte. Notez que la clé API doit avoir la permission Autre -> Accéder à l'API WebSockets activée.

Besoin d’aide supplémentaire ?