wuzilong eb62100364 提交 6 tháng trước cách đây
..
bin eb62100364 提交 6 tháng trước cách đây
obj eb62100364 提交 6 tháng trước cách đây
publish 6f9bf91f15 tijiao' 6 tháng trước cách đây
youdangdang dd48fb73e6 FIRST COMMIT 7 tháng trước cách đây
Program.cs 6f9bf91f15 tijiao' 6 tháng trước cách đây
README.md dd48fb73e6 FIRST COMMIT 7 tháng trước cách đây
build.ps1 dd48fb73e6 FIRST COMMIT 7 tháng trước cách đây
steamAPI.csproj dd48fb73e6 FIRST COMMIT 7 tháng trước cách đây
test-api.ps1 dd48fb73e6 FIRST COMMIT 7 tháng trước cách đây

README.md

steamAPI

Steam 登录验证本地服务,供客户端调用:使用账号、密码 + maFile 完成 Steam 登录,返回 session、steam_id、cookies 等。

环境要求

启动方式

在项目目录下执行:

cd steam-client/steamAPI
dotnet run
dotnet run --urls "http://localhost:5000"

默认监听 http://localhost:5000(客户端 Tauri 代码中写死为该地址)。

指定端口(可选)

dotnet run --urls "http://localhost:5000"
# 或使用其他端口,例如 5001,同时需修改客户端中 verify_steam_login 的 api_url
dotnet run --urls "http://localhost:5001"

发布为独立可执行文件(Windows x64)

# 在 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):

      {
      "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):

        {
        "MaFilePath": "maFile 完整路径",
        "ProxyUrl": "http://127.0.0.1:7890",
        "Session": {
        "SteamId": 7656,
        "AccessToken": "xxx",
        "RefreshToken": "xxx",
        "SessionId": "optional"
        },
        "ConfirmationId": 1234567890123456789,
        "Operation": "accept"
        }
        

    或(可选显式传 key,加速执行):

    {
      "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):

    export STEAM_PROXY_URL="http://127.0.0.1:7890"
    dotnet run --urls "http://localhost:5000"
    

依赖

  • 项目引用同目录下 SteamAuth 及 NuGet 包 SteamKit2、Microsoft.AspNetCore.App。首次运行会自动还原包。