Een WebSocket-authenticatietoken ophalen - Voorbeeldcode in Python 3

Laatst bijgewerkt: 1 april 2025

De private feeds van onze WebSocket API's (zoals de openOrders-feed addOrder-feed) vereisen een authenticatietoken van het GetWebSocketsToken-endpoint van de REST API.

Hieronder volgt een voorbeeld van Python 3-code voor het aanroepen van het REST API GetWebSocketsToken-endpoint, het parsen van de JSON-respons en het uitvoeren van het nieuwe WebSocket-authenticatietoken:

#!/usr/bin/env python3

# Vereiste Python-bibliotheken importeren
import time
import base64
import hashlib
import hmac
import urllib.request
import json

# Kopieer/plak de publieke API-sleutel en de private API-sleutel zoals weergegeven in het accountbeheer
api_key = 'COPY/PASTE API PUBLIC KEY HERE'
api_secret = 'COPY/PASTE API PRIVATE KEY HERE'

# Variabelen (API-methode, nonce en POST-gegevens)
api_path = '/0/private/GetWebSocketsToken'
api_nonce = str(int(time.time()*1000))
api_post = 'nonce=' + api_nonce

# Cryptografische hash-algoritmen
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)

# Handtekening coderen in base64-formaat dat wordt gebruikt in de API-Sign-waarde
api_signature = base64.b64encode(api_hmac.digest())

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

# API-respons uitvoeren
print(json.loads(api_response)['result']['token'])

De variabelen voor de publieke/private API-sleutel (api_key en api_secret) moeten worden vervangen door een nieuwe API-sleutel van je Kraken-account, waarna de code kan worden gebruikt om een WebSocket-authenticatietoken voor hetzelfde account op te halen. Let op: de API-sleutel moet de machtiging Other -> Access WebSockets API hebben ingeschakeld.

Meer hulp nodig?