最近把网站的Steam库存展示页重做了一下,看起来比之前顺眼多了。想让网页动态显示Steam相关信息还是要用API,又快又省事。Steam提供了很多接口,每次用都去看官方文档着实不便。在更新完页面之后决定写点东西记一下,以备后用。
接口格式
Steam Web API的统一形式如下:http(s)://api.steampowered.com/$interface/$method/v$version/?appid=$appid&key=$key&steamids=$userid&format=$format
http与https都能使用。但是体感前者更快。
以下是参数用法:
interface
Steam Web API太多,接口可以看做是API的分类。
method
方法即具体API功能,想要的功能可以在文档里查到。下文会列举一些常用API。
version
大部分API的版本是v1
,少数存在v2
。格式写v1
与v0001
均可。
appid
有些功能需要指定游戏ID,可以在商店页面或SteamDB查到。下文用000000
代替。
key
使用Steam Web API需要注册一个密钥。打开密钥申请页面,登录之后按提示操作可以获取自己的密钥,下文用XXXXXX
代替。

steamids
填写自己的64位ID。不知道可以去SteamDB查询。用Steam账号登录或输入社区昵称即可查询。下文用123456
代替。

format
获取的数据形式有3种可选:json
:缺省值。获取JSON格式数据。xml
:获取XML格式数据。vdf
:获取Valve的数据格式。这个是阀门公司自己的文件格式,具体介绍见官方文档。
常用API
使用之前要公开社区信息,否则获取的数据不正常。不同的密钥可以访问的API不同。目前我只知道有开发者与玩家之别,其他还不知道。自己可以用的API可以从以下接口查询:http://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v1/?key=XXXXXX&steamids=123456
其中有该key可用的所有API信息。包括interface、method、version和描述等。
用户信息
http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=XXXXXX&steamids=123456
其实v1和v2获取的信息一样。获取昵称、头像、在线状态等基础数据。
游戏库存
http://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=XXXXXX&steamid=123456
获取库存总数与所有库存内容。* Steam曾经清理过一些低质量游戏,这些游戏不计入游戏总数,但在该接口中是计入并列出的。
最近游玩
http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v1/?key=XXXXXX&steamid=123456
获取两周内的使用信息。包括产品名称、ID、图标、图片和游玩时间等内容。与Steam社区主页下方的最新动态一样。最后游玩的游戏会排在最前面。
使用时间
http://api.steampowered.com/IPlayerService/ClientGetLastPlayedTimes/v1/?key=XXXXXX
获取所有产品的使用时间。包括总时间,最近使用的时间(两周),在windows、linux、mac等平台分别的使用时间。
社区等级
http://api.steampowered.com/IPlayerService/GetSteamLevel/v1/?key=XXXXXX&steamid=123456
获取社区等级。没错,只能获取等级。
好友列表
http://api.steampowered.com/ISteamUser/GetFriendList/v1/?key=XXXXXX&steamid=123456
获取好友列表与成为好友的时间。
组列表
http://api.steampowered.com/ISteamUser/GetUserGroupList/v1/?key=XXXXXX&steamid=123456
获取加入的组列表。
徽章列表
http://api.steampowered.com/IPlayerService/GetBadges/v1/?key=XXXXXX&steamid=123456
获取所有获得的徽章的详细信息。
封禁记录
http://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=XXXXXX&steamids=123456
获取VAC封禁信息。
成就信息
http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v1/?key=XXXXXX&steamid=123456&appid=000000
获取指定游戏或软件的成就信息。必须指定产品ID才能获取信息。
附:PHP中的使用
在PHP中JSON格式数据使用比较方便,format直接不写就好。以用户信息为例,API返回的JSON数据形式如下:
{
"response": {
"players": [{
"steamid": "76561198351198710",
"communityvisibilitystate": 3,
"profilestate": 1,
"personaname": "没帽子的路易吉",
"commentpermission": 1,
"profileurl": "https ://steamcommunity.com/id/zsedczy/",
"avatar": "https ://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/e9/e958e73e3be34b12158943a2bdf28546e593a8d4.jpg",
"avatarmedium": "https ://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/e9/e958e73e3be34b12158943a2bdf28546e593a8d4_medium.jpg",
"avatarfull": "https ://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/e9/e958e73e3be34b12158943a2bdf28546e593a8d4_full.jpg",
"lastlogoff": 1588653952,
"personastate": 0,
"realname": "----",
"primaryclanid": "103582791400000000",
"timecreated": 1481958853,
"personastateflags": 0,
"loccountrycode": "CN",
"locstatecode": "04",
"loccityid": 10000
}]
}
}
在页面可以直接用file_get_contents
获取,再用json_decode
解码成php可以识别的数组格式就可以使用了。
<?php
$json = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXX&steamids=123456");
$data = json_decode($json, true);
?>
使用时用数组方式输出即可。如输出昵称:
<?php
echo "Name:".$data[response][players][0][personaname];
?>