feat(授权): 添加后端服务支持自动获取授权码

- 新增 server 目录包含后端服务,支持通过 AK/SK 或用户名密码认证获取授权码
- 添加前端 API 模块实现授权码获取功能
- 更新 UI 增加获取授权码按钮和输入框布局
- 完善 README 文档说明后端配置和启动流程
This commit is contained in:
2026-04-29 17:21:24 +08:00
parent 149cd0222d
commit 4f72519c9a
7 changed files with 353 additions and 61 deletions

View File

@@ -10,6 +10,7 @@
// 导入 HwICSUiSdk
import { HwICSUiSdk, ICSEventKey, InteractionMode, ConfigKey } from '../hwICSUiSdk/HwICSUiSdk.esm.js';
import { fetchOnceCode } from './api.js';
// ===== 全局状态 =====
const state = {
@@ -31,6 +32,7 @@ const elements = {
// 按钮
initBtn: document.getElementById('initBtn'),
destroyBtn: document.getElementById('destroyBtn'),
getOnceCodeBtn: document.getElementById('getOnceCodeBtn'),
startChatBtn: document.getElementById('startChatBtn'),
stopChatBtn: document.getElementById('stopChatBtn'),
startSpeakBtn: document.getElementById('startSpeakBtn'),
@@ -408,6 +410,24 @@ async function toggleAudio() {
}
}
async function handleGetOnceCode() {
try {
elements.getOnceCodeBtn.disabled = true;
elements.getOnceCodeBtn.textContent = '🔄 获取中...';
logger.info('正在获取授权码...');
const onceCode = await fetchOnceCode();
elements.onceCode.value = onceCode;
logger.info('授权码获取成功');
} catch (error) {
logger.error('获取授权码失败', error.message);
} finally {
elements.getOnceCodeBtn.disabled = false;
elements.getOnceCodeBtn.textContent = '🔑 获取授权码';
}
}
function clearLogs() {
elements.logContainer.innerHTML = '';
logger.info('日志已清空');
@@ -417,6 +437,7 @@ function clearLogs() {
function bindEvents() {
elements.initBtn.addEventListener('click', initializeSDK);
elements.destroyBtn.addEventListener('click', destroySDK);
elements.getOnceCodeBtn.addEventListener('click', handleGetOnceCode);
elements.startChatBtn.addEventListener('click', startChat);
elements.stopChatBtn.addEventListener('click', stopChat);