如何无需用户或客户端操作,从服务器访问Google Play Games公开排行榜?
服务器端无用户授权访问Google Play Games排行榜方案
完全可以实现以服务账户/管理员身份从自有服务器随时访问排行榜,无需依赖客户端的用户令牌,具体操作步骤如下:
1. 创建并配置Google Cloud服务账户
- 登录Google Cloud控制台,选择和你的Play Games Services绑定的游戏项目
- 进入「IAM与管理」>「服务账户」,创建新的服务账户
- 给该服务账户分配
Games Services Admin角色(或者更精细的权限,比如games.scores.list、games.leaderboards.list,确保拥有读取排行榜的权限) - 下载服务账户的JSON密钥文件,妥善存储在服务器的安全位置,不要泄露
2. 启用Google Play Games Admin API
- 在Google Cloud控制台的「API和服务」>「库」中,搜索并启用「Google Play Games Admin API」
3. 服务器端调用API(以Python为例)
先安装必要的依赖包:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
然后编写核心调用代码:
from google.oauth2 import service_account from googleapiclient.discovery import build # 替换为你的服务账户密钥路径和目标排行榜ID SERVICE_ACCOUNT_KEY_PATH = "your-service-account-key.json" TARGET_LEADERBOARD_ID = "your-leaderboard-id" API_SCOPES = ["https://www.googleapis.com/auth/games"] # 初始化服务账户认证 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_KEY_PATH, scopes=API_SCOPES ) # 构建Games API客户端 games_service = build("games", "v1", credentials=credentials) # 获取排行榜公开分数数据 def fetch_leaderboard_scores(max_results=100): request = games_service.leaderboards().scores( leaderboardId=TARGET_LEADERBOARD_ID, maxResults=max_results, collection="PUBLIC" # 选择公开排行榜,若需社交榜可改为SOCIAL ) return request.execute() # 调用示例 if __name__ == "__main__": leaderboard_data = fetch_leaderboard_scores() print(leaderboard_data)
4. 注意事项
- 权限验证:确保服务账户的角色权限覆盖了排行榜读取需求,
Games Services Admin角色默认包含所有必要权限 - 排行榜可见性:如果你的排行榜设置为公开,服务账户可直接访问;私有排行榜需确认服务账户的访问权限
- API配额:注意Google Play Games API的调用配额限制,避免高频调用触发限流
内容的提问来源于stack exchange,提问作者Gamengineer314
相关产品推荐
相关产品推荐

