$username, 'password' => $password ]); $options = [ 'http' => [ 'method' => 'POST', 'header' => [ "Content-Type: application/json", "Content-Length: " . strlen($loginData) ], 'content' => $loginData ] ]; $context = stream_context_create($options); $response = @file_get_contents($loginUrl, false, $context); if ($response === FALSE) { return [ 'success' => false, 'message' => 'Failed to connect to Umami API', 'token' => null ]; } $responseData = json_decode($response, true); if (isset($responseData['token'])) { return [ 'success' => true, 'message' => 'Token obtained successfully', 'token' => $responseData['token'], 'user_info' => $responseData['user'] ?? null ]; } else { return [ 'success' => false, 'message' => 'Invalid credentials or API response', 'token' => null, 'response' => $responseData ]; } } // 执行token获取 echo "正在获取新的Umami token...\n"; echo "API URL: $apiBaseUrl\n"; echo "Username: $username\n"; echo "\n"; $result = getNewUmamiToken($apiBaseUrl, $username, $password); if ($result['success']) { echo "✅ Token获取成功!\n"; echo "Token: " . $result['token'] . "\n"; if (isset($result['user_info'])) { echo "用户信息:\n"; echo " - ID: " . ($result['user_info']['id'] ?? 'N/A') . "\n"; echo " - Username: " . ($result['user_info']['username'] ?? 'N/A') . "\n"; echo " - Role: " . ($result['user_info']['role'] ?? 'N/A') . "\n"; } // 保存token到缓存文件 $tokenData = [ 'token' => $result['token'], 'timestamp' => time(), 'user_info' => $result['user_info'] ?? null ]; if (file_put_contents($tokenFile, json_encode($tokenData, JSON_PRETTY_PRINT))) { echo "\n✅ Token已保存到缓存文件: $tokenFile\n"; } else { echo "\n❌ 保存token到缓存文件失败\n"; } } else { echo "❌ Token获取失败!\n"; echo "错误信息: " . $result['message'] . "\n"; if (isset($result['response'])) { echo "API响应: " . json_encode($result['response'], JSON_PRETTY_PRINT) . "\n"; } } echo "\n"; echo "使用说明:\n"; echo "1. 请确保在文件顶部正确配置了API URL、用户名和密码\n"; echo "2. 确保Umami服务正常运行且网络连接正常\n"; echo "3. 如果获取失败,请检查用户名密码是否正确\n"; echo "4. Token将自动保存到 $tokenFile 文件中\n"; echo "5. info.php 会自动使用缓存的token\n"; ?>