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 中的帐户 ID 是 32 位无符号 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 位错误的主要内容,如果未能解决你的问题,请参考以下文章