Steam Web API简易使用介绍


最近把网站的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。格式写v1v0001均可。

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才能获取信息。

更多API

附: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
		}]
	}
}
JSON

在页面可以直接用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

使用时用数组方式输出即可。如输出昵称:

<?php
    echo "Name:".$data[response][players][0][personaname];
?>
PHP

Powered by WordPress. Theme by Alx.