Приватні канали наших WebSocket API (такі як канал openOrders та канал addOrder) потребують токена автентифікації з кінцевої точки REST API GetWebSocketsToken.
Нижче наведено приклад коду на Python 3 для виклику кінцевої точки REST API GetWebSocketsToken, парсингу відповіді JSON та виведення нового токена автентифікації WebSocket:
#!/usr/bin/env python3
# Імпорт необхідних бібліотек Python
import time
import base64
import hashlib
import hmac
import urllib.request
import json
# Скопіюйте/вставте публічний та приватний ключі API, як вони відображаються в управлінні акаунтом
api_key = 'СКОПІЮЙТЕ/ВСТАВТЕ ПУБЛІЧНИЙ КЛЮЧ API ТУТ'
api_secret = 'СКОПІЮЙТЕ/ВСТАВТЕ ПРИВАТНИЙ КЛЮЧ API ТУТ'
# Змінні (метод API, nonce та дані POST)
api_path = '/0/private/GetWebSocketsToken'
api_nonce = str(int(time.time()*1000))
api_post = 'nonce=' + api_nonce
# Алгоритми криптографічного хешування
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)
# Кодування підпису у формат base64, що використовується у значенні API-Sign
api_signature = base64.b64encode(api_hmac.digest())
# 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()
# Виведення відповіді API
print(json.loads(api_response)['result']['token'])
Змінні публічного/приватного ключів API (api_key та api_secret) слід замінити на новий ключ API з вашого акаунта Kraken, після чого код можна використовувати для отримання токена автентифікації WebSocket для того самого акаунта. Зверніть увагу, що для ключа API має бути ввімкнено дозвіл Other -> Access WebSockets API.