仅通过scores.list API获取自己的得分

7
我已经建立了一个基于Web的游戏,可以将玩家的得分提交到排行榜。该游戏还有一个网页,显示来自该排行榜的公共得分。它通过访问scores.list API端点获取数据。排行榜和游戏已经在Google Play控制台中发布。
三名玩家已经玩过游戏并提交了他们的得分。所有三个玩家都有公共Play Game档案,并且Play Game控制台中的排行榜页面显示提交了多个独特的得分。但是当我的Javascript代码访问时,只有玩家自己的得分在集合中返回,而不是其他两个玩家的得分。
如何获得排行榜上的所有得分?
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.
    })
  }
})

在尝试您的代码后,您的错误日志中有任何错误吗? - Danee
日志中没有错误,我也在调试器中逐步执行了代码,没有看到任何错误。result.items集合仅包含一个条目。该条目是当前登录玩家的得分。我本来期望每个提交得分的玩家在result.items中都有一个条目。 - Martin Omander
2
文档中指出,“公共排行榜是由那些选择公开分享游戏活动的玩家组成的。如果您的玩家没有选择公开分享他们的游戏活动,则他们将不会出现在该排行榜中。” 因此,您可能需要检查您的测试用户是否已选择选项以公开分享他们的游戏数据。 - Julien Zakaib
可能唯一的方法是将结果发送到您自己的服务器,以及_Google公共排行榜_。 - Axalix
Julien,感谢您的评论。根据您的消息,我刚刚验证了所有玩家都启用了“允许其他人查看您的游戏活动”选项。他们的Play Games个人资料也是公开的。我不知道为什么我仍然无法获得所有玩家的分数。 - Martin Omander
2个回答

0

我很久以前写了一些 API 调用,有些试试看:

  • 确保你不是处于测试模式(在测试模式下,共享分数的行为会有所不同)
  • 设置maxResults参数以防万一(接受的值为1...30)

谢谢您的建议!我都跟进了。测试模式:确保游戏已经发布并非测试状态。maxResults:将其设为30。不幸的是,我仍然只能获取到当前玩家的分数... - Martin Omander

0
为什么在回调函数的参数中已经有了response,你还要使用result作为变量呢?如果你将function(response)改为function(result),一切都应该没问题。而现在这段代码仍然能够正常工作的原因是你另外定义了一个变量result来存储单个玩家的得分。

他说它可以工作,但只返回一个结果..所以我猜这是复制粘贴错误。 - MaanooAk
如果在父级作用域中使用另一个“result”变量来存储一个分数,则可以正常工作。 - Andrew
哦,亲爱的,我犯了一个复制粘贴错误。对此感到抱歉。我添加了一行代码,用于分配“result”变量。 - Martin Omander
根据 Google Play API 文档,请求的响应体中没有 result 属性。尝试使用加粗的 response 代替 response.result。但是,如果函数使用不存在的属性,仍然会让人感到困惑。此外,您是否尝试指定可选参数 maxResults?请在 request 声明中设置 maxResults: 30 - Andrew
感谢您关于“result”变量的提醒。我通过删除它来简化我的代码,运行了一下,得到了相同的结果(只有当前玩家的分数可见)。同时,我已经更新了上面原始问题中的代码。 - Martin Omander
你尝试过使用 listWindow 方法而不是 list 吗? - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接