如何使用谷歌Api获取android应用程序版本代码?

如何使用谷歌Api获取android应用程序版本代码?,android,.net,google-api,google-oauth,google-api-dotnet-client,Android,.net,Google Api,Google Oauth,Google Api Dotnet Client,我的桌面应用程序使用www.google.com/accounts/ClientLogin(目前不可用)获取身份验证令牌,我使用该令牌从非官方市场api(此处的包名)获取android应用程序信息。) 现在谷歌想让我使用OAuth授权,因为ClientLogin不推荐使用,而且总是使用404响应 所以问题是-我如何使用OAuth 2.0和.NET的Google客户端Api库通过“appId”(例如“23”)获取android应用程序信息 还有一个问题-如何手动生成此请求 发布“HTTP/1.1”

我的桌面应用程序使用www.google.com/accounts/ClientLogin(目前不可用)获取身份验证令牌,我使用该令牌从非官方市场api(此处的包名)获取android应用程序信息。)

现在谷歌想让我使用OAuth授权,因为ClientLogin不推荐使用,而且总是使用404响应

所以问题是-我如何使用OAuth 2.0和.NET的Google客户端Api库通过“appId”(例如“23”)获取android应用程序信息

还有一个问题-如何手动生成此请求

发布“HTTP/1.1”

用户代理:google api dotnet客户端/1.9.3.19379(gzip)

内容类型:application/x-www-form-urlencoded

主持人:accounts.google.com

内容长度:750

连接:保持活力

断言=

我可以在Fiddler中看到这个请求是如何从GoogleLib发送的?但它将响应存储在lib中,我无法访问auth令牌:

{ “访问令牌”:“此处令牌”, “令牌类型”:“承载者”, “到期日”:3600 }


我找到了这个问题的解决办法

GoogleAPI提供了一种获取应用程序版本代码的方法

首先,您需要在GoogleDevelopers控制台中创建一个项目,使用p12密钥文件为服务帐户创建凭据。 并启用Google Play开发者Api

在Google Play开发者控制台中,您应该将应用程序链接到此项目

之后,您可以在eour desktop.NET应用程序中编写以下代码:

var serviceAccountEmail = "YOUR Service Account Email";
        var certificate = new X509Certificate2(@"key.p12", "YOUR_CLIENT_SECRET", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential credential = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer(serviceAccountEmail)
                {
                    Scopes = new[] { AndroidPublisherService.Scope.Androidpublisher }
                }.FromCertificate(certificate));

        var service = new AndroidPublisherService(
            new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Edits Sample"
                });
        var apiEditBody = new AppEdit();
        // packageName - your app id like com.myapp.test
        var appEdit = service.Edits.Insert(apiEditBody, packageName)
            .Execute();

        var list = service.Edits.Apks.List(packageName, appEdit.Id)
            .Execute()
            .Apks;

        var deletingEditResult = service.Edits.Delete(packageName, appEdit.Id).Execute();
        var versionCode = list.Last().VersionCode.Value;
就这样。
希望,这个答案将帮助某人=)

类似于上面的解决方案,它对我非常有帮助,下面是一个使用Google API获取应用程序最新生产跟踪版本代码的解决方案:

        var path = "PATH_TO_JSON_KEY";
        var credential = GoogleCredential.FromFile(path).CreateScoped(AndroidPublisherService.Scope.Androidpublisher);
        var service = new AndroidPublisherService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "Production Version Checker" });
        var appEdit = service.Edits.Insert(new AppEdit(), "com.package.name").Execute();
        var listTracks = service.Edits.Tracks.List("com.package.name", appEdit.Id).Execute();
        var productionTrack = listTracks.Tracks.FirstOrDefault(t => t.TrackValue == "production");
        var latestProductionRelease = productionTrack.Releases.FirstOrDefault(r => r.Status == "completed");
        var latestProductionVersionCode = latestProductionRelease.VersionCodes.FirstOrDefault();
        var deletingEditResult = service.Edits.Delete("com.package.name", appEdit.Id).Execute();