UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API

179 lines (136 loc) 6.32 kB
# Аутентификация в Solver SDK В этом документе описаны методы аутентификации в Solver SDK для различных API и WebSocket соединений. ## Содержание - [HTTP API аутентификация](#http-api-аутентификация) - [WebSocket аутентификация](#websocket-аутентификация) - [Тестовая аутентификация](#тестовая-аутентификация) - [Обработка ошибок аутентификации](#обработка-ошибок-аутентификации) ## HTTP API аутентификация SDK поддерживает два основных метода аутентификации для HTTP запросов: ### 1. API ключ ```javascript const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', apiKey: 'your-api-key' }); ``` API ключ автоматически добавляется в заголовок `X-API-Key` для всех HTTP запросов. ### 2. Пользовательские заголовки ```javascript const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', headers: { 'Authorization': 'Bearer your-jwt-token', 'X-Custom-Header': 'Custom-Value' } }); ``` ## WebSocket аутентификация Для WebSocket соединений SDK использует отдельный механизм аутентификации через специальное событие `authenticate`. ### Стандартная аутентификация WebSocket ```javascript // 1. Создаем экземпляр SDK const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', apiKey: 'your-api-key' }); // 2. Опции для streamChatWithThinking const options = { model: 'claude-3-7-sonnet-20240229', thinking: true, authToken: 'your-auth-token' // ← Токен для WebSocket аутентификации }; // 3. Отправка запроса const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent); ``` Параметр `authToken` используется для аутентификации WebSocket соединений и передается в событии `authenticate`. ### Низкоуровневая WebSocket аутентификация Если вы работаете напрямую с WebSocket клиентом, вы можете настроить аутентификацию следующим образом: ```javascript // Получаем WebSocket клиент const wsClient = sdk.getWebSocketClient(); // Настраиваем опции подключения с аутентификацией const connectionOptions = { namespace: 'reasoning', authToken: 'your-auth-token', query: { reasoningId: 'reasoning-123' } }; // Подключаемся к WebSocket серверу await wsClient.connect(connectionOptions); // Проверяем статус аутентификации const isAuthenticated = wsClient.isAuthenticated(); console.log('Аутентификация WebSocket:', isAuthenticated); ``` ## Тестовая аутентификация Для тестовых сред SDK поддерживает упрощенную аутентификацию: ```javascript const options = { // Другие параметры... authToken: 'test-token' }; const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent); ``` > **Важно**: Начиная с версии 1.7.4, устаревший параметр `testToken` удален в пользу унифицированного параметра `authToken`. ## Обработка ошибок аутентификации SDK предоставляет механизм обработки ошибок аутентификации: ```javascript // Обработчик событий WebSocket const handleEvent = (eventType, data) => { if (eventType === 'authentication_error') { console.error('Ошибка аутентификации:', data.message); // Возможная реакция на ошибку (переподключение, запрос нового токена и т.д.) switch (data.code) { case 'TOKEN_EXPIRED': // Запросить новый токен break; case 'INVALID_TOKEN': // Перенаправить на страницу входа break; default: // Общая обработка ошибок break; } } }; ``` ### Коды ошибок аутентификации | Код ошибки | Описание | |------------|----------| | `TOKEN_EXPIRED` | Истек срок действия токена | | `INVALID_TOKEN` | Недействительный токен | | `MISSING_TOKEN` | Отсутствует токен | | `AUTH_ERROR` | Общая ошибка аутентификации | | `FORBIDDEN` | Доступ запрещен | ## Примеры ### Полный пример аутентификации для рассуждений ```javascript const { CodeSolverSDK, WebSocketNamespace } = require('solver-sdk'); async function exampleWithAuthentication() { // 1. Создаем экземпляр SDK const sdk = new CodeSolverSDK({ baseURL: 'https://api.example.com', apiKey: 'your-api-key' }); // 2. Создаем рассуждение const reasoning = await sdk.reasoning.createReasoning({ projectId: 'project-id', query: 'Объясни этот проект' }); // 3. Подключаемся через WebSocket с аутентификацией await sdk.reasoning.connectWebSocket({ reasoningId: reasoning.id, authToken: 'your-auth-token' }); // 4. Настраиваем обработчики событий sdk.reasoning.on('authentication_error', (data) => { console.error('Ошибка аутентификации:', data); }); sdk.reasoning.on('authenticated', (data) => { console.log('Успешная аутентификация:', data); }); // 5. Отправляем запрос await sdk.reasoning.startReasoning(reasoning.id); } ```