通过 Google API 客户端 PHP 库访问 Google Play 帐户报告

Pan*_*kaj 5 php google-cloud-storage

  • Google Play 开发者帐户报告存储在私有 Google Cloud Storage 存储桶中。
  • 我想用 PHP 以编程方式下载这些报告。
  • 在此链接部分 ->使用客户端库和服务帐户下载报告提供了相关步骤。
  • 但我仍然无法实现它。
  • 此外,没有适用于 PHP 的示例代码,因为 Google API 客户端 PHP 库仍处于测试版本。

那么是否真的可以用 PHP 访问私有 Google Cloud Storage 存储桶呢?

我已经尝试过 gsutil 工具,但这并不能完全满足我的需求。

帮助将不胜感激。

小智 6

首先,您必须创建一个用于身份验证的应用程序帐户。转到Google Play 开发者控制台>>设置>>页面底部的 API 访问,单击“创建帐户”(不是 OAuth)。然后为创建的帐户设置权限并生成 JSON 格式的密钥文件。应该看起来像这样:

{
    "type": "service_account",
    "project_id": "api-...",
    "private_key_id": "...",
    "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
    "client_email": "...@...iam.gserviceaccount.com",
    "client_id": "...",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/..."
}
Run Code Online (Sandbox Code Playgroud)

下一步在 PHP 脚本中使用生成的凭据。在 Composer Google Cloud 客户端库中下载或 require 。

使用 Google Cloud 客户端库方法授权和下载报告文件:

use Google\Cloud\Storage\StorageClient;

$client = new StorageClient([
    'scopes' => [StorageClient::READ_ONLY_SCOPE],
    'keyFile' => json_decode(file_get_contents('yourKeyFile.json'), true)
]);
$bucket = $client->bucket('pubsite_prod_rev_*'); //Find your bucket name in Google Developer Console >> Reports

//List all objects in bucket
foreach ($bucket->objects(['prefix' => 'stats/installs/']) as $object) {
    print_r($object->name());
}

//Download some file
$file = $bucket->object('stats/installs/installs_*_overview.csv');
$file->downloadToFile();

//Or print as string
echo $file->downloadAsString();
Run Code Online (Sandbox Code Playgroud)

  • 对于未来的开发人员来说:@icoder 解决方案是正确的。当您创建服务帐户并授予其权限时,您必须等待几个小时(对我来说是 24 小时)才能使用您的服务帐户下载报告。我在创建/删除服务帐户上浪费了一周的时间,但你必须要有耐心 (2认同)