调用Google Android Publisher API时API Key无效的求助
调用Android Publisher API时遭遇API密钥无效错误
我尝试用PHP按标准Google API流程调用Android Publisher API,代码如下:
<? require __DIR__ . '/vendor/autoload.php'; $credentialsFilePath = '/path/to/key_file.json'; //替换为实际路径和文件名 $client = new \Google_Client(); $client->setAuthConfig($credentialsFilePath); $client->addScope('https://www.googleapis.com/auth/androidpublisher'); $client->refreshTokenWithAssertion(); $token = $client->getAccessToken(); $bearer = $token['access_token']; $url = 'https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}?key={My_API_key}'; $headers = array( 'Content-Type:application/json', 'Authorization: Bearer '.$bearer ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); print "result below:\n"; print_r($result); ?>
尽管已正确创建并加载上述JSON密钥文件,且在$url末尾填入了API密钥面板中定义的密钥,却始终收到以下返回结果:
{ "error": { "code": 400, "message": "API key not valid. Please pass a valid API key.", "errors": [ { "message": "API key not valid. Please pass a valid API key.", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "API_KEY_INVALID", "domain": "googleapis.com", "metadata": { "service": "androidpublisher.googleapis.com" } } ] } }
我是否需要使用其他类型的密钥?
问题排查与解决
- 你同时使用了两种冲突的认证方式:服务账号Bearer Token和API Key。调用Android Publisher API时,用服务账号认证(即请求头中的Bearer Token)就足够了,直接删除URL末尾的
?key={My_API_key}部分即可。 - 确认服务账号已在Google Play Console中被授予对应权限(比如应用内购买查看权限),确保JSON密钥文件关联的账号拥有目标应用的访问权限。
- 检查URL中的
{packageName}、{productId}、{token}占位符是否已替换为实际有效值,未替换的占位符也可能触发请求错误。
内容的提问来源于stack exchange,提问作者Fabrizio Ferrari
相关产品推荐
相关产品推荐

