如何使用Google Api获取android应用程序版本号?

问题描述 投票:0回答:2

我的桌面应用程序使用www.google.com/accounts/ClientLogin(目前不可用)来获取身份验证令牌,我用它从非官方市场API(https://androidquery.appspot.com/api)获取Android应用程序信息/market?app=(此处输入包名))

现在 Google 希望我使用 OAuth 授权,因为 ClientLogin 已弃用并且始终响应 404。

所以问题是 - 我如何使用 OAuth 2.0 和适用于 .NET 的 Google 客户端 Api 库通过“appId”(仅版本代码 - “23”)获取 Android 应用程序信息?

android .net google-api google-oauth google-api-dotnet-client
2个回答
1
投票

我找到了这个问题的解决方案。

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

首先,您需要在 Google Developers Console 中创建一个项目,使用 p12 密钥文件为服务帐户创建凭据。 并启用 Google Play Developers Api。

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

之后,您可以在我们的桌面 .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;

就是这样。 希望这个答案会对某人有所帮助=)


1
投票

与上面对我非常有帮助的解决方案类似,这里有一个使用 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();
© www.soinside.com 2019 - 2024. All rights reserved.