使用 Steam API 获取 CSGO 库存

1 php api steam

好的,我需要使用 Steam API 获取 csgo 库存。我使用这个网址

https://api.steampowered.com/IEconItems_730/GetPlayerItems/v1key= $api_key&steamids=$steamid

我使用这个 url 来访问所有 csgo 项目。

https://api.steampowered.com/IEconItems_730/GetSchema/v2

问题 1,是我无法理解第一个 url 中的返回值。没有项目名称、图像和...。这就是它返回的方式

          "id": 547938992,
            "original_id": 547938992,
            "defindex": 13,
            "level": 1,
            "quality": 4,
            "inventory": 53,
            "quantity": 1,
            "rarity": 1,
            "attributes":
Run Code Online (Sandbox Code Playgroud)

问题 2,什么时候使用第二个 url 来获取所有 csgo 皮肤。它只返回香草皮。我怎样才能像其他网站一样获得完整的皮肤:opskins、bitskins、csgolounge 和....。

我知道在 Stackoverflow 中有很多这样的问题,但他们都没有以我能理解的方式回答。

我为我糟糕的英语感到抱歉。

小智 5

对于我的项目,我将另一个 url 用于 Steam 的 API,

"http://steamcommunity.com/profiles/*insert steamId*/inventory/json/730/2"

您可以尝试使用您的 steamID 并将其粘贴到您的浏览器中,您将看到响应的样子。这就是你将要使用的。

如果您使用此 url 发出请求,您将收到一个包含两部分的 json 对象的响应。其中一部分被调用rgInventory(ie. data.rgInventory)并包含用户 csgo-inventory 中每个皮肤的 ID。第二部分被调用rgDescriptions(ie. data.rgDescriptions)并包含每个皮肤的 info/name/img url。要将信息添加到皮肤的用户在rgInventory你需要比较classId了双方的每个项目rgInventoryrgDescriptions。该classId是决定它是哪种类型的武器,因此CLASSID不是唯一的ID。

所以我所做的是使用两个for-loops, 并比较 ids 以便我可以将item_url,market_name等添加到rgInventory数组中,然后我将其作为回调发送出去。像这样(javascript):

            var ids = getID(data.rgInventory);
            var item = getItems(data.rgDescriptions);

            for (var i = 0; i < ids.length; i++) {
                for (var k = 0; k < item.length; k++) {
                    if (ids[i].classid == item[k].classid) {
                        ids[i].market_name = item[k].market_name;
                        ids[i].icon_url = item[k].icon_url;
                        ids[i].tradable = item[k].tradable;
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

因此,如果两个项目的 classids 相同,我会将我想要的信息添加到变量“ids”中,在这种情况下,它是rgInventory. 当for-loops完成我送走了IDS-变量作为我的回调。

随意提问,如果这令人困惑,请见谅。请记住在浏览器中输入我与您的 Steam 配置文件链接的 url 并查看结果。

希望能帮助到你!