Dota 2 Steam Web API出现32位错误

时间:2017-08-13 12:38:54

标签: 32bit-64bit 32-bit steam steam-web-api

这涉及以下要求:

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,但是大量的ID表示4294967295。由于4294967295出现了这么多,我认为这是一个错误的结果所以我用Google搜索并从维基百科发现了这个:

  

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

这是否意味着它在Steam方面出错?此API是否存在错误且无法使用?有什么办法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我知道现在回答这个问题为时已晚,但是如果有人仍然想知道并且想知道为什么 Steam DOTA 2 API 对于许多{{ 1}}。

Steam DOTA 2 API 没什么问题,也没有错误。如果您看到很多4294967295的图片,那是完全正常的。

其原因是因为您在Steam中的帐户ID 32位未签名INT。 并且,如果您使用DOTA 2 API获取玩家的比赛历史记录,则他/她必须已从Dota 2 Client(游戏内“设置”选项内)启用了将比赛数据公开发布选项。默认情况下它是禁用的。

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

解决方案是用户公开数据,或者每当您看到ID不作为真实帐户存储在数据库中时,都给它起一个类似于Anonymous的名称,或者根据您的选择。