如何使用GoogleApi获取android应用版本码?
How to obtain android app version code using Google Api?
我的桌面应用程序使用 www.google.com/accounts/ClientLogin(目前不可用)来获取身份验证令牌,我曾经从非官方市场 api 获取 android 应用程序信息(https://androidquery.appspot.com/api/market?app=(put 这里是包名))
现在 Google 要我使用 OAuth 授权,因为 ClientLogin 已弃用并且一直响应 404。
所以问题是 - 我如何使用 OAuth 2.0 和 Google 客户端 [=58] 通过 "appId" 获取 android 应用程序信息(例如只是版本代码 - “23”) =] .NET 的库?
另一个问题 - 我如何手动生成此请求
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 中,我无法访问身份验证令牌:
{
"access_token" : "TOKEN_HERE",
"token_type" : "Bearer",
"expires_in":3600
}
???
我找到了这个问题的解决方案。
Google Api提供一种获取应用版本码的方法
首先,您需要在 Google 开发者控制台中创建一个项目,使用 p12 密钥文件为服务帐户创建凭据。
并启用 Google Play Developers Api.
在 Google Play Developers Console 中,您应该 link 您的应用到此项目。
之后,您可以在我们的桌面 .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();
我的桌面应用程序使用 www.google.com/accounts/ClientLogin(目前不可用)来获取身份验证令牌,我曾经从非官方市场 api 获取 android 应用程序信息(https://androidquery.appspot.com/api/market?app=(put 这里是包名))
现在 Google 要我使用 OAuth 授权,因为 ClientLogin 已弃用并且一直响应 404。
所以问题是 - 我如何使用 OAuth 2.0 和 Google 客户端 [=58] 通过 "appId" 获取 android 应用程序信息(例如只是版本代码 - “23”) =] .NET 的库?
另一个问题 - 我如何手动生成此请求
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 中,我无法访问身份验证令牌:
{ "access_token" : "TOKEN_HERE", "token_type" : "Bearer", "expires_in":3600 }
???
我找到了这个问题的解决方案。
Google Api提供一种获取应用版本码的方法
首先,您需要在 Google 开发者控制台中创建一个项目,使用 p12 密钥文件为服务帐户创建凭据。 并启用 Google Play Developers Api.
在 Google Play Developers Console 中,您应该 link 您的应用到此项目。
之后,您可以在我们的桌面 .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();