玩家只能从 score.list API 获得自己的分数

Posted

技术标签:

【中文标题】玩家只能从 score.list API 获得自己的分数【英文标题】:Players only get their own scores from scores.list API 【发布时间】:2017-12-14 19:48:27 【问题描述】:

我已经构建了一个基于网络的游戏,它将玩家的分数提交到排行榜。该游戏还有一个网页,显示该排行榜的公开分数。它通过点击scores.list API 端点来获取这些数据。排行榜和游戏已在 Google Play 管理中心发布。

三名玩家玩过游戏,他们的分数已提交。这三位玩家都有公开的 Play Game 个人资料,Play 游戏控制台中的排行榜页面显示已提交了多个唯一分数。但是当我的 javascript 代码点击 scores.list 时,items 集合中只返回玩家自己的分数,而不是其他两个玩家的分数。

如何从排行榜中获得所有分数?

var request = gapi.client.games.scores.list(
  leaderboardId: leaderboardId,
  collection: 'PUBLIC',
  timeSpan: 'ALL_TIME'
);
request.execute(function(response) 
  if (response.items) 
    response.items.forEach(function(item) 
      // Print item.formattedScore to screen.
      // Only the currently signed-in player's score is returned.
    )
  
)

【问题讨论】:

在尝试您的代码时,您的错误日志中是否有任何错误? 日志中没有错误,我也已经在调试器中单步执行了代码,没有看到任何错误。 result.items 集合仅包含一个条目。该条目是当前登录玩家的得分。我本来希望每个提交分数的玩家在 result.items 中有一个条目。 文档说The public leaderboard is a leaderboard made up of players who have chosen to share their gameplay activity publicly. If your player has not chosen to share their gameplay activity publicly, they won't appear in this leaderboard. 所以你可能需要检查你的测试用户是否勾选了公开分享他们的游戏数据的选项。 除了 Google 公共排行榜之外,唯一的方法可能是将结果实际发送到您自己的服务器。 朱利安,感谢您的评论。根据您的消息,我刚刚验证所有玩家都启用了Allow others to see your game activity 选项。他们的 Play 游戏资料也是公开的。我不知道为什么我仍然没有得到所有玩家的分数。 【参考方案1】:

我很久以前写过一些 API 调用,有些东西可以尝试:

确保您不是testing mode 中(在测试模式下,它在共享分数时有不同的行为) 设置 maxResults 参数以防万一(可接受的值为 1...30)

【讨论】:

感谢您的建议!我跟进了两者。测试模式:确保游戏已发布且未在测试中。 maxResults:设置为 30。不幸的是,我仍然只得到当前玩家的分数......【参考方案2】:

如果你有response 作为回调函数的参数,你为什么要使用result 作为变量?如果您将 function(response) 更改为 function(result),我想一切都很好,并且这仍然有效的原因是您有另一个变量 result 存储来自一位玩家的单个分数

【讨论】:

他说它有效,但只返回一个..所以我猜这是一个复制粘贴错误 如果有另一个 result 变量用于在父范围中存储一个分数,它会起作用 天哪,我犯了复制粘贴错误。对于那个很抱歉。我在上面添加了分配result 变量的代码行。 根据 Google Play API 文档判断,请求的响应正文中没有属性 result。尝试使用粗体 response 而不是 response.result。但是,您的函数如何处理不存在的属性仍然令人困惑。 另外您是否尝试过指定可选参数maxResults?尝试将maxResults: 30 设置为request 声明 感谢您提供有关 result 变量的说明。我通过删除它来简化我的代码,运行它,并得到相同的结果(只有当前玩家的分数是可见的)。另外,更新了上面原始问题中的代码。

以上是关于玩家只能从 score.list API 获得自己的分数的主要内容,如果未能解决你的问题,请参考以下文章

486. 预测赢家

LeetCode 486. 预测赢家

leetcode 486 预测赢家

2 名玩家,pion 在矩阵中移动

Google Play 服务 - Unity - 只能在 iOS 上邀请“最近的玩家”

从 Google Places API 获得超过 5 条评论