如何使用Google Api获取android应用版本代码



我的桌面应用程序使用www.google.com/accounts/ClientLogin(目前不可用)获得认证令牌,我曾经从非官方市场api (https://androidquery.appspot.com/api/market?app=(put这里的包名)获取android应用程序信息)

现在Google想让我使用OAuth授权,因为ClientLogin已弃用,并且一直响应404。

所以问题是-我怎么能得到android应用程序信息的"appId"(只是版本代码,例如-"23")使用OAuth 2.0和谷歌客户端Api库。net ?

另一个问题-我如何手动生成这个请求

POST "https://accounts.google.com/o/oauth2/token HTTP/1.1"

User-Agent: google-api-dotnet-client/1.9.3.19379 (gzip)

内容类型:应用程序/x-www-form-urlencoded

主持人:accounts.google.com

内容长度:750

连接:维生

断言= ?

我可以在小提琴手看到这个请求如何从谷歌库发送?但是它将响应存储在lib中并且我无法访问auth token:

{"access_token": "TOKEN_HERE","token_type": "Bearer",expires_in: 3600}

? ?

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

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

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

在Google Play Developers Console中,你应该将你的应用链接到这个项目。

之后,你可以在桌面。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();

相关内容

  • 没有找到相关文章

最新更新