.Net - Google Play 下载销售报告

Posted

技术标签:

【中文标题】.Net - Google Play 下载销售报告【英文标题】:.Net - Google Play Download Sales Reports 【发布时间】: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 的销售报告?

【问题讨论】:

【参考方案1】:

我早上回来,神奇的事情现在开始了。 在创建 Google 凭据时,我也改为使用 fromStream 而不是 fromFile

改变:

string[] scopes = new string[]  "https://www.googleapis.com/auth/devstorage.read_only" ;
var credential = GoogleCredential.FromFile(Path.Combine(Environment.CurrentDirectory, "keys/googleplay.json")).CreateScoped(scopes);

收件人:

GoogleCredential credential;
using (var stream = new FileStream(Path.Combine(Environment.CurrentDirectory, "keys/googleplay.json"), FileMode.Open, FileAccess.Read))

    credential = GoogleCredential.FromStream(stream).CreateScoped(scopes);

但是,这两个凭据创建系统都可以正常工作...也许 Google 花了 12 个小时来同步权限?希望这个例子可以在未来帮助其他人。

【讨论】:

嗨,布莱恩。您的回答和问题为我的项目提供了宝贵的信息,现在我期待在几个小时内我将能够下载报告!

以上是关于.Net - Google Play 下载销售报告的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 下载 Play 管理中心报告

asp .net sqlserver婚纱销售网站源码+报告

Google Play 控制台开发者监控错误

Google Play 发布前报告

App Annie解析Google Play商店最热门游戏应用 |头条数读

Google Play 控制台报告应用程序崩溃,我无法重现