最近把网站的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
}]
}
}
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
老哥我用有些不需要webapikey的方法会报forbiddenAccess is denied. Retrying will not help. Please verify your key= parameter.这个错误,这个应该如何处理
试着在官方文档里找到这个方法,看看他们怎么说的吧。印象里api有时候也会因为网络的问题报forbidden。
提示这个就加上key=XXXX字段
具体怎么使用啊,老何
老何觉得老何在文中描述的很具体了,php的使用方法见文末,其他语言可以问老度
我用本账号的api key调用各种接口都返回{}, 注销后重新申请也是一样的结果, 请问key存在被ban或者被限制的情况吗
这个我也不太清楚,可以换个号重新申请一个key试试。
请问有没有api来获取CSGO这个游戏里面的等级
我没用过CSGO的api。可以去社区查查,链接在文章开头。
您好,有api可以获取游戏的更新状态吗?我的游戏专用服务器无法自动更新,只能每次手动重启服务器进行更新
似乎是有的,可以去手册里查查,链接在文章最前面
老哥您好,之前看到您的博客有关于steam api接口的帖子,我有个steam的自动化脚本,不过最近steam的登录api规则更改了,现在没办法进行模拟登录了老哥能支个招吗
我没有研究到这么深,只是想在博客展示一下游戏时间什么的,没有弄过模拟登陆,不好意思
为什么我用php获取,它都返回错误,服务器拒绝访问,怎么办?
我试了,API可以用。检查一下是代码或者你服务器设置是不是有问题。或者你的key是不是填错了。
大佬你好,我现在封装了一个网页游戏,目前需要实现一个功能,用户在访问网址的时候自动获取用户的steamid或者说是用户在steam上的唯一标识号,请问有什么办法可以实现吗?
根据你的描述,无法理解你是从哪儿获取该值?从steam存在浏览器的cookie里读?这个我没做过,可以查查有没有人分析过Steam的cookie的结构。
感谢大佬,大佬写的真的很清晰
你好请问一下,steamid可以通过js获取吗?不然steam web api基本都需要steamid参数,这个参数要怎么通过代码得到?
可以通过api获取id
大佬知道怎么登录steam吗 需要获取用户的steamid
这个我没做过,第三方网站利用steam账号登录可能需要在steam申请吧。可以向steam客服寻求帮助。
没有可以按游戏时长排名的api么,看官网说明没找到
我用了steam的api,只能用那个所有游戏的那个,有的没有封面,太丑了,哭了,你看看
https://cat.dorcandy.cn/steam.html
我也没有发现哦
好奇博主是做技术开发的嘛?
不是哦,出于兴趣瞎琢磨的
博主知道 发起交易报价的接口是哪个吗 找半天愣是没找到
这个官方文档里似乎没有注意到过,但是有一些大佬有二次开发的接口,你可以找他们交流交流,或者直接用二次开发的接口
这个可以有√
有用好评哦 亲
我来催更
咕咕咕
当时我也看了steamapi翻了半天没看懂hhhhh
太多了我也是看了好久才知道怎么用