【问题标题】:32-bit error with Dota 2 Steam Web APIDota 2 Steam Web API 出现 32 位错误
【发布时间】: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 ,你可以接受作为有效数据的响应并继续或引发错误或异常。你唯一能做的就是通过他们的技术支持提出这个问题

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


【解决方案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 之类的名称或根据您的选择。

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 2016-05-20
    • 2015-09-11
    • 2017-10-05
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多