当我尝试执行谷歌开发人员API的请求时。购买()。产品()。get()我收到一个403错误:projectNotLinked.
消息告诉我"用于调用Google Play Developer API的项目id尚未链接到Google Play Developer Console中。"
此时,我可以转到控制台,取消链接以前的项目,并链接这个项目,运行代码,代码就可以工作了。
然而,我不能永久取消链接以前的项目:我需要保持它们都链接。如何解决这个问题?
我环顾四周,找不到解决办法。我试着打电话给谷歌,他们告诉我他们不支持这种请求。
再次强调@andy的评论:只能有一个单一的链接API项目。
我花了相当多的时间来找出这个问题。Google的文档在这里没有帮助。如果你需要访问多个项目/应用程序,你必须在单个链接的API项目中创建多个服务帐户,并单独管理对应用程序的访问。
Andy的评论是正确的,我发现Google Play Developer Console中的LINKED PROJECT描述令人困惑。
但是,我在Google Developers Console中设置了一个带有适当的服务器密钥和服务帐户的公司项目。这不是理想的,但它有效。然后你可以在Google Play开发者控制台为所需的服务帐户分配权限。
您也可以只设置一个密钥和服务帐户,如果这样做更简单,并使用它们如下面的PHP服务器
$service_account_name = 'xxxxxxxxxx-xxxxxxxxxxxxxxx@developer.gserviceaccount.com';
$key_file_location = somedir/keyfile.p12;
$client = new Google_Client();
$client->setApplicationName("GoogleDevelopersConsoleProjectName");
$service = new Google_Service_AndroidPublisher($client);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/androidpublisher'),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$apiKey = "GoogleDevelopersConsoleServerKey";
$client->setDeveloperKey($apiKey);
$package_name = "com.yourcompany.yourappname1";
那么你所需要做的就是修改另一个应用程序的$package_name。
$package_name = "com.yourcompany.yourappname2";
然后使用Google Service AndroidPublisher查询订阅
$service = new Google_Service_AndroidPublisher($client);
$results = $service->purchases_subscriptions->get($package_name,$subscriptionId,$token,array());
你也可以开始分配多个密钥,服务帐户和其他凭据,你在Google Play开发者控制台添加其他项目。