这涉及以下要求:
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是否存在错误且无法使用?有什么办法可以解决这个问题吗?
答案 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的名称,或者根据您的选择。