我正在尝试使用Google API PHP客户端从网络服务器加载GPGS的一些分数。
以下是我的工作方式:
1 /设置OAUTH客户端
我使用服务帐户在Google API控制台上创建了OAuth客户端,根据以下文档:https://developers.google.com/accounts/docs/OAuth2ServiceAccount
它为我提供了证书+电子邮件地址+ client_id。
2 /编写PHP代码
这是我的代码:
$client = new Google_Client();
$client->setApplicationName("");
$client->setAssertionCredentials(
new Google_Auth_AssertionCredentials(
"something@developer.gserviceaccount.com", // email provided by console
array('https://www.googleapis.com/auth/games'), // scope
file_get_contents("../certificates/certificate.p12") // keyfile i downloaded
)
);
$service = new Google_Service_Games($client);
$service->scores->listScores("myLeaderboardId", "PUBLIC", "ALL_TIME");
3 /第一结果
关于这个片段的第一个奇怪的事情是API使用此消息向我抛出了HTTP状态401的错误:
请求缺少必需的范围: plus.login
根据官方文档(https://developers.google.com/games/services/web/api/scores/list),此请求所需的范围仅为游戏
4 / HITTING A WALL
将此范围添加到我的请求中确实不是什么大问题,但在此之后,API又以401 HTTP状态回复了我:
用户尚未完成注册
我完全理解,因为我使用的是服务帐户的凭据,而不是真实的帐户。
问题
我做错了什么?我是否真的可以通过从服务器调用Google API来加载排行榜?
先谢谢你的帮助,
此致