1 32-bit 32bit-64bit steam-web-api steam
这涉及以下请求:
https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?key=<MY KEY>&account_id=<MY ID>
Run Code Online (Sandbox Code Playgroud)
我收到的回复如下所示:
...
"players":[
{
"account_id": 4294967295
...
},
{
"account_id": 4294967295
...
}
...
Run Code Online (Sandbox Code Playgroud)
account_id应该返回用户的 32 位帐户 ID(文档此处)。其中少数包含有效 ID,但大部分都说4294967295。由于4294967295出现了这么多,我认为这是一个错误的结果,所以我用谷歌搜索并从维基百科找到了这个:
数字 4,294,967,295 相当于十六进制值 FFFF、FFFF16,是 32 位无符号整数在计算中的最大值。
这是否意味着这是 Steam 方面的错误?这个API是否有漏洞并且无法使用?我有什么办法可以解决这个问题吗?
我知道现在回答这个问题已经太晚了,但如果有人仍然想知道并想知道为什么Steam DOTA 2 API对4294967295许多IDs.
Steam DOTA 2 API没有任何问题,也没有被窃听。如果你在很多人身上看到这种情况,IDs那是完全正常的。
其背后的原因是因为您在 Steam 中的帐户 ID是32 位 Unsigned INT。 如果您使用 DOTA 2 API 来获取玩家的比赛历史记录,他/她必须从 Dota 2 客户端启用EXPOSE MATCH DATA TO PUBLIC选项(在游戏中的设置选项内)。默认情况下它是禁用的。
因此,如果用户尚未启用该选项,并且您尝试访问该用户的匹配数据,API 将返回“否定”状态。由于 Steam ID 是 32 位,它将返回MAXINT (2^32-1 或 4294967295)。因此,在许多情况下,当用户未公开暴露数据时,您会得到相同的号码 ID。
解决方案是用户公开数据,或者每当您看到 ID 没有存储在数据库中(考虑为真实帐户)时,为其指定一个名称,例如“匿名”或根据您的选择。