# steamAPI Steam 登录验证本地服务,供客户端调用:使用账号、密码 + maFile 完成 Steam 登录,返回 session、steam_id、cookies 等。 ## 环境要求 - [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) ## 启动方式 在项目目录下执行: ```bash cd steam-client/steamAPI dotnet run dotnet run --urls "http://localhost:5000" ``` 默认监听 **http://localhost:5000**(客户端 Tauri 代码中写死为该地址)。 ### 指定端口(可选) ```bash dotnet run --urls "http://localhost:5000" # 或使用其他端口,例如 5001,同时需修改客户端中 verify_steam_login 的 api_url dotnet run --urls "http://localhost:5001" ``` ### 发布为独立可执行文件(Windows x64) ```bash # 在 steamAPI 目录下执行 cd steam-client/steamAPI # 打包为独立可执行文件(带应用图标) dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o ./publish ``` 打包完成后,可执行文件位于 `publish/steamAPI.exe`,可直接双击运行。 > **注意**:首次运行会监听 http://localhost:5000 ## 接口说明 - **POST /login** - Body (JSON): `{ "Username": "steam用户名", "Password": "密码", "MaFilePath": "maFile 完整路径", "ProxyUrl": "http://127.0.0.1:7890" }` - 成功:返回 `session`(steamId、accessToken、refreshToken、sessionId)及 `cookies`(含 steamLoginSecure 等) - 失败:400/500 + 错误信息 - **POST /wallet-balance** - Body (JSON): `{ "SteamLoginSecure": "xxx", "ProxyUrl": "http://127.0.0.1:7890" }` - 成功:返回 `{ "amount": "1234", "currency": "USD" }`(`amount` 单位为美分) - 失败:400/500 + 错误信息 - **POST /trade-confirmations/list** - 用途:拉取待处理的 Steam 交易/市场确认列表(对应 SDA 的 `FetchConfirmationsAsync`) - Body (JSON): ```json { "MaFilePath": "maFile 完整路径", "ProxyUrl": "http://127.0.0.1:7890", "Session": { "SteamId": 7656, "AccessToken": "xxx", "RefreshToken": "xxx", "SessionId": "optional" } } ``` - 成功:返回 `confirmations` 列表(含 `id`、`key`、`creatorId`、`type`、`headline`、`summary` 等)和最新 `session` - 失败:400/401/500 + 错误信息 - **POST /trade-confirmations/operate** - 用途:执行确认动作(对应 SDA 的 `AcceptConfirmation` / `DenyConfirmation`) - Body (JSON): ```json { "MaFilePath": "maFile 完整路径", "ProxyUrl": "http://127.0.0.1:7890", "Session": { "SteamId": 7656, "AccessToken": "xxx", "RefreshToken": "xxx", "SessionId": "optional" }, "ConfirmationId": 1234567890123456789, "Operation": "accept" } ``` 或(可选显式传 key,加速执行): ```json { "MaFilePath": "maFile 完整路径", "ProxyUrl": "http://127.0.0.1:7890", "Session": { "SteamId": 7656, "AccessToken": "xxx", "RefreshToken": "xxx", "SessionId": "optional" }, "ConfirmationId": 1234567890123456789, "ConfirmationKey": 1234567890123456789, "Operation": "accept" } ``` `Operation` 仅支持:`accept`、`cancel` - 说明:当未传 `ConfirmationKey` 时,服务端会先拉取确认列表,按 `ConfirmationId` 自动匹配 key - 成功:返回 `{ "success": true/false, "operation": "...", "confirmationId": ..., "confirmationKey": ..., "keyResolvedFromList": true/false }` 和最新 `session` - 失败:400/401/404/500 + 错误信息 ### 代理配置(避免依赖系统全局代理) 当本机直连 Steam 受限时,可以只给 `steamAPI` 进程配置代理,不需要开系统全局代理: 1. 请求级代理(优先级最高):在 `/login` 的 JSON 中传 `ProxyUrl`。 2. 进程级代理:设置环境变量 `STEAM_PROXY_URL` 后启动服务。 示例(macOS / Linux): ```bash export STEAM_PROXY_URL="http://127.0.0.1:7890" dotnet run --urls "http://localhost:5000" ``` ## 依赖 - 项目引用同目录下 `SteamAuth` 及 NuGet 包 `SteamKit2`、`Microsoft.AspNetCore.App`。首次运行会自动还原包。