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

如何用Google API PHP实现Google Play游戏服务玩家ID验证?

PHP 实现 Google Play Games 玩家身份验证流程

现有代码的问题

你当前的代码用了useApplicationDefaultCredentials(),这是服务端无用户交互场景的凭据方案,适合后台任务调用API,但你的场景是处理玩家通过Unity获取的授权码,需要走OAuth2授权码兑换流程,所以这段代码方向不对。

正确实现步骤与代码

1. 准备凭据信息

确保你持有Google Cloud控制台创建的OAuth 2.0客户端ID和密钥(不是服务账号的secret.json,在「API和服务」→「凭据」菜单下创建),同时确认重定向URI和Unity端配置的一致。

2. 兑换授权码为访问令牌

Unity端拿到授权码后传给PHP后端,后端执行兑换逻辑:

require_once("google/vendor/autoload.php");

// 初始化客户端
$client = new Google_Client();
// 替换为你的OAuth客户端信息
$client->setClientId("你的OAuth客户端ID");
$client->setClientSecret("你的OAuth客户端密钥");
$client->setRedirectUri("配置的重定向URI");
$client->addScope('https://www.googleapis.com/auth/games');

// 从Unity接收的授权码
$authorizationCode = "Unity返回的授权码";

// 兑换授权码获取令牌
$token = $client->fetchAccessTokenWithAuthCode($authorizationCode);
if (isset($token['error'])) {
    die("授权码兑换失败: " . $token['error']);
}

// 将令牌绑定到客户端
$client->setAccessToken($token);

3. 调用Verify接口获取玩家ID

拿到访问令牌后,调用接口提取玩家的Google Play ID:

// 初始化Games服务实例
$service = new Google_Service_Games($client);

// 替换为你的Google Play Games应用ID
$applicationId = "你的Games应用ID";

try {
    // 调用verify接口
    $verifyResult = $service->applications->verify($applicationId);
    // 提取玩家ID
    $playerId = $verifyResult->getPlayerId();
    echo "玩家Google Play ID: " . $playerId;
} catch (Google_Service_Exception $e) {
    die("API调用失败: " . $e->getMessage());
} catch (Google_Exception $e) {
    die("客户端配置错误: " . $e->getMessage());
}

4. 关键注意事项

  • 令牌有效期:访问令牌默认有效期1小时,若需长期访问,保存返回的$token['refresh_token'],后续用$client->fetchAccessTokenWithRefreshToken($refreshToken)刷新令牌。
  • 权限校验:确保Google Play Game Services API已启用,且作用域https://www.googleapis.com/auth/games已在客户端配置中勾选。
  • 安全要求:客户端密钥必须在后端保存,绝对不能暴露给前端。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:46