You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

尝试获取Play Store用户最新分数,调用loadCurrentPlayerLeaderboardScore始终失败

解决Play Store Leaderboard分数加载失败的问题

我来帮你梳理下这个问题的排查方向,你调用loadCurrentPlayerLeaderboardScore一直失败,大概率是这些环节出了问题:

1. 先确认核心参数与登录状态

  • 排行榜ID正确性:你用的CgkIiMyT6f0SEAIQHg必须和Google Play Console里对应排行榜的ID完全一致,包括大小写和特殊字符,建议直接从控制台复制粘贴,避免手动输入出错。
  • 登录账号有效性:GoogleSignIn.getLastSignedInAccount(this)可能返回null,或者账号未授权游戏服务权限。调用前一定要加校验:
    GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
    if (account == null) {
        Toast.makeText(this, "请先登录Google游戏账号", Toast.LENGTH_SHORT).show();
        // 这里可以触发登录流程,比如启动GoogleSignInIntent
        return;
    }
    
    同时要确保登录时请求了游戏服务的Scope:
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build();
    GoogleSignInClient signInClient = GoogleSignIn.getClient(this, gso);
    

2. 检查后台配置是否到位

  • 启用API:去Google Cloud Console确认Google Play Game Services API已经启用,没启用的话直接搜索启用即可。
  • 签名证书匹配:Google Play Console和Cloud Console里配置的SHA-1必须和你当前测试/发布包的签名SHA-1一致,调试包和发布包的签名通常不同,别搞混了。
  • 测试账号配置:如果是调试阶段,要把测试设备上的Google账号添加到Google Play Console的游戏服务测试列表里,否则会被限制访问排行榜数据。

3. 优化代码获取错误详情

你当前的失败监听只提示了“addOnFailureListener”,根本不知道具体原因,先修改这段代码打印异常信息:

.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        String errorMsg = "加载失败: " + e.getMessage();
        Toast.makeText(MenuActivity.this, errorMsg, Toast.LENGTH_LONG).show();
        Log.e("LeaderboardError", "加载分数失败", e);
    }
});

通过LogCat查看完整的异常栈,能直接定位是权限问题、ID错误还是网络问题。

4. 修正后的完整代码示例

// 先校验登录状态
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
if (account == null) {
    Toast.makeText(this, "请先登录Google游戏账号", Toast.LENGTH_SHORT).show();
    // 触发登录流程示例
    // startActivityForResult(signInClient.getSignInIntent(), RC_SIGN_IN);
    return;
}

// 加载排行榜分数
Games.getLeaderboardsClient(this, account)
    .loadCurrentPlayerLeaderboardScore(
        "CgkIiMyT6f0SEAIQHg", 
        LeaderboardVariant.TIME_SPAN_ALL_TIME, 
        LeaderboardVariant.COLLECTION_PUBLIC)
    .addOnSuccessListener(this, new OnSuccessListener<AnnotatedData<LeaderboardScore>>() {
        @Override
        public void onSuccess(AnnotatedData<LeaderboardScore> leaderboardScoreAnnotatedData) {
            if (leaderboardScoreAnnotatedData != null && leaderboardScoreAnnotatedData.get() != null) {
                long score = leaderboardScoreAnnotatedData.get().getRawScore();
                Toast.makeText(MenuActivity.this, "当前分数: " + score, Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(MenuActivity.this, "未获取到有效分数数据", Toast.LENGTH_SHORT).show();
            }
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            String errorMsg = "加载失败: " + e.getMessage();
            Toast.makeText(MenuActivity.this, errorMsg, Toast.LENGTH_LONG).show();
            Log.e("LeaderboardLoadError", errorMsg, e);
        }
    });

先按照这个步骤排查,尤其是通过异常信息定位具体问题,大部分情况下都是后台配置或者登录权限的问题。

内容的提问来源于stack exchange,提问作者açelya kılıç

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:52:28