【发布时间】:2021-04-05 19:48:57
【问题描述】:
我有一个 .Net Core 应用程序试图从我的 Google Play 帐户下载最新的销售报告,以查看和跟踪销售统计数据。这些报告存储在由 Google Play 商店“拥有”/管理的 Google Cloud Storage 存储桶中。
我在 .Net 中找不到许多其他示例或相关问题,并且遇到了存储权限问题。
我在这里遵循相当有限的指南:https://support.google.com/googleplay/android-developer/answer/6135870#export 在“使用客户端库和服务帐户下载报告”下
第 1 步: 创建服务帐号 我为一个新项目创建了一个新的服务帐户,如下所示。如图所示,我还为所有存储对象授予了该服务帐户权限。
第 2 步:在您的 Play 控制台上添加服务帐号 我还邀请了这个新的服务帐户用户到我的游戏控制台,并授予它使用应用程序查看其信息和财务报告的权限。
第 3 步:使用 API 调用获取报告 我已经为服务用户创建并下载了一个 .JSON 密钥。
// Scope as specified in https://support.google.com/googleplay/android-developer/answer/6135870#export
string[] scopes = new string[] { "https://www.googleapis.com/auth/devstorage.read_only" };
// Import JSON credential
var credential = GoogleCredential.FromFile(Path.Combine(Environment.CurrentDirectory, "keys/googleplay.json")).CreateScoped(scopes);
// Bucket ID of Google Play Store - Found from reports page "Copy URL"
string bucketId = "pubsite_prod_5XXXXXXXXX2";
var storage = StorageClient.Create(credential);
var bucketObjects = storage.ListObjects(bucketId);
foreach (var bucketObject in bucketObjects)
{
Console.WriteLine(bucketObject.Name);
}
这会导致权限错误:
Google.Apis.Requests.RequestError\r\nsupportapp-googleplay@ascendant-nova-300105.iam.gserviceaccount.com 没有对 Google Cloud Storage 存储分区的 storage.objects.list 访问权限。 [403]\r\n错误 [\r\n\tMessage[supportapp-googleplay@ascendant-nova-300105.iam.gserviceaccount.com 没有 storage.objects.list 访问 Google Cloud Storage 存储桶的权限。
我创建的服务帐号拥有storage.objects.list 权限,并且也被邀请加入我的 Play 管理中心(如屏幕截图所示)。这是由 Google Play 而非我托管/拥有的存储桶。如何解决此权限问题以允许我的关联帐户通过 API 访问 Google Play 的销售报告?
【问题讨论】:
标签: google-api google-api-dotnet-client google-play-developer-api