Dota 2 Steam Web API 出现 32 位错误

Posted

技术标签:

【中文标题】Dota 2 Steam Web API 出现 32 位错误【英文标题】:32-bit error with Dota 2 Steam Web API 【发布时间】:2018-01-21 11:04:12 【问题描述】:

这涉及以下请求:

https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?key=<MY KEY>&account_id=<MY ID>

我收到的回复是这样的:

 ...

"players":[
    
        "account_id": 4294967295
        ...
    ,
    
        "account_id": 4294967295
        ...
    

 ...

account_id 应该返回用户的 32 位帐户 ID(文档 here)。其中少数包含有效 ID,但其中大部分说 4294967295。由于4294967295 出现的次数太多,我认为这是错误的结果,所以我用谷歌搜索并从***找到了这个:

数字4,294,967,295,相当于十六进制值FFFF,FFFF16,是计算中32位无符号整数的最大值。

这是否意味着这是 Steam 方面的错误?这个 API 是否存在漏洞且无法使用?有什么办法可以补救吗?

【问题讨论】:

不能说 API 是不稳定的,但你不能做太多补救 account_id ,你可以接受作为有效数据的响应并继续或引发错误或异常。你唯一能做的就是通过他们的技术支持提出这个问题 【参考方案1】:

我知道现在回答这个问题为时已晚,但如果有人仍然想知道为什么 Steam DOTA 2 API 为许多 IDs 返回相同的数字 4294967295

Steam DOTA 2 API 没有任何问题,也没有错误。如果你看到很多IDs这是完全正常的。

这是因为您在 Steam 中的帐户 ID32 位无符号 INT。 如果您使用 DOTA 2 API 来获取玩家的比赛历史,他/她必须从 Dota 2 客户端(在游戏中的设置选项中)启用 EXPOSE MATCH DATA TO PUBLIC 选项。默认禁用。

因此,如果用户尚未启用该选项,并且您尝试访问该用户的匹配数据,API 将返回否定状态。由于 Steam ID 是 32 位的,它将返回 MAXINT (2^32-1 或 4294967295)。因此,在很多情况下,您都获得了相同的数字 ID,而用户并未公开公开数据。

解决方案是用户公开数据,或者当您看到该 ID 未存储在数据库中(考虑为真实帐户)时,将其命名为 Anonymous 之类的名称或根据您的选择。

【讨论】:

以上是关于Dota 2 Steam Web API 出现 32 位错误的主要内容,如果未能解决你的问题,请参考以下文章

Steam Dota2 安装方法以及一些设置·

蒸汽平台问答信息公布,可以继续用Steam玩国服DOTA2!

用steam安装不了dota2

我的steam找不到dota2了,让我重新安装怎么办

steam里面的DOTA2怎么删

全体注意!蒸汽平台下周二开启!510款Steam游戏统统免费玩!《战锤3》震旦发布!