【问题标题】:How to obtain android app version code using Google Api?如何使用 Google Api 获取 android 应用版本代码?
【发布时间】:2015-10-16 16:08:47
【问题描述】:

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

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

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

还有一个问题——我如何手动生成这个请求

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

用户代理:google-api-dotnet-client/1.9.3.19379 (gzip)

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

主机:accounts.google.com

内容长度:750

连接:保持活动状态

断言=?

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

{ “access_token”:“TOKEN_HERE”, "token_type" : "承载者", “expires_in”:3600 }

???

【问题讨论】:

    标签: android .net google-api google-oauth google-api-dotnet-client


    【解决方案1】:

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

    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;
    

    就是这样。 希望,这个答案会帮助别人=)

    【讨论】:

      【解决方案2】:

      与上面对我非常有帮助的解决方案类似,这是一个使用 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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-10
        • 1970-01-01
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 1970-01-01
        相关资源
        最近更新 更多