java - 适用于 Java 的 AndroidPublisher (V3) Google API 客户端库示例
问题描述
我正在为我的安全后端服务器将 AndroidPublisher 库从 v1 升级到 v3。AndroidPublisher 库 (v3) 将允许我安全地进行服务器端购买验证和确认应用内购买和订阅。
v1 的现有代码不再兼容。v3 库看起来更好,但我找不到任何示例代码:
- 使用客户端 JSON 构建客户端凭据。
Get
&Acknowledge
使用 PurchaseToken 进行购买。
Maven设置:
<project>
<dependencies>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-androidpublisher</artifactId>
<version>v3-rev103-1.25.0</version>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.30.2</version>
</dependency>
</dependencies>
</project>
API 文档:https ://developers.google.com/android-publisher/api-ref/purchases/products/get
寻找这样的样本:https ://developers.google.com/api-client-library/java/google-api-java-client/samples
任何简短的示例代码都会有很大帮助。
解决方案
添加以下依赖项
compile "com.google.apis:google-api-services-androidpublisher:v3-rev103-1.25.0"
compile "com.google.auth:google-auth-library-oauth2-http:0.17.1"
然后在此处从 Google Cloud Console 启用 Google Developer Play Api 库
在凭据中创建具有角色的服务帐户密钥Pub/Sub Admin
并保存 json 文件
在谷歌开发者控制台这里。在Settings >> Developer Account >> API Access
链接您的应用程序。
然后在代码中执行以下操作以获取订阅信息。
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream("<service-account-key-file>.json")).createScoped(AndroidPublisherScopes.ANDROIDPUBLISHER);
AndroidPublisher pub = new AndroidPublisher.Builder(
GoogleNetHttpTransport.newTrustedTransport(),
JacksonFactory.getDefaultInstance(),
new HttpCredentialsAdapter(credentials)
).setApplicationName("<app-name>").build();
SubscriptionPurchase purchase = pub.purchases().subscriptions().get(
"<app-package>",
"<subscription-id>",
"<purchase-token>"
).execute();
println(purchase);
注意:如果您收到此错误:
当前用户没有足够的权限来执行请求的操作。
然后在一天后重试,因为在启用 google play developer api 并从 google 控制台创建服务帐户密钥后,您需要等待 24 到 48 小时并执行以下操作
从 Google Play 控制台转到(具有管理员访问权限):
- 设置(左面板) 开发者帐户(左面板) 用户和权限(左面板)
- 单击邀请新用户按钮。
- 输入服务帐户电子邮件(与您使用的 json 文件中的电子邮件相同,以及创建服务帐户时 google 生成的电子邮件)
- 在角色下拉菜单中选择管理员。
- 点击发送邀请
推荐阅读
- analysis - 如何使用 SALib 对 ODE 进行敏感性分析?
- shell - 如何从 hdfs 位置删除除一个以外的所有文件?
- typescript - 错误类型错误:BlinkId 不是 Ionic 4 的构造函数
- android - HEVC 编码器(从 JPG 转换为 HEIC)
- arrays - 创建空字符串数组 BigQuery
- asp.net-mvc - 我的 Kendo UI 项目在取消单击按钮时出现此错误,该错误采用未定义的 'uid'"
- python-3.x - 函数调用作为参数
- imap - 对于 Office 365,节点 Imap 无法更改为看不见
- html - 将 html 特殊字符定义为要在 XSD 中被 Unicode 字符替换的实体或元素
- html - 之间的区别和