将多个项目ID连接到Google Play开发者控制台

时间:2015-08-05 13:01:19

标签: google-api google-play-services

当我尝试执行Google开发人员API请求时。购买()。产品(5)。 get()我收到403错误:projectNotLinked。

该消息告诉我"用于调用Google Play Developer API的项目ID尚未在Google Play开发者控制台中链接。"

此时我可以转到控制台,取消上一个项目的链接,并链接这个项目,运行代码,代码可以正常工作。

但是,我不能永久地取消上一个项目的链接:我需要将它们保持联系。我该如何解决这个问题?

我环顾四周,无法找到解决方案。试图打电话给谷歌,他们告诉我他们不支持这种请求。

提前致谢。

2 个答案:

答案 0 :(得分:6)

重新强调@ andy的评论:只能有一个链接的API项目

我花了很长时间才发现这一点。 Google的文档在这里没有帮助。

如果您需要访问多个项目/应用程序,则必须在单个链接的API项目中创建多个服务帐户,并单独管理对应用程序的访问。

答案 1 :(得分:3)

Andy的评论是正确的,我发现Google Play开发者控制台中的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开发者控制台中添加其他项目的其他凭据。