简而言之:我可以在服务器端使用 Google Play Android Developer API 而不在 Play 商店中提供任何应用程序吗?
背景:我正在开发一个为应用程序提供每月订阅的项目。每个订阅的对应数据(购买令牌、日期等)都存储在后端数据库中。现在我想创建一个遍历每个数据集的 cronjob。对于每个订阅,我想联系 Google API 以检索订阅是否仍然有效的信息,并根据响应状态更新我们的数据库.
对于后端逻辑,我使用google-api-java-client library。
要取消或验证订阅,我需要先使用 OAuth2 对自己进行身份验证。去过也做过。
new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher") // $1
.setServiceAccountPrivateKeyFromP12File(new File(filePath))
.setClientSecrets(CLIENT_ID, CLIENT_SECRET) // $2
.build();
$1:我不知道给定的帐户范围是否有效。因为我只能在极少数例子中找到这个值,但在这个概述和谷歌操场上都没有
$2 我想这是必要的,尽管我发现了很多没有提供这些信息的例子。
但是,不幸的是,当我提供无效数据(如错误的电子邮件或私钥)时,我看不到任何差异。
问题
- 如何验证 GoogleCredential 是否正确?
- 我可以在接下来的步骤中看到它吗,比如联系 androidpublisher API?
在下一步中,我尝试获取订阅的购买状态:
Androidpublisher publisher = new Androidpublisher.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(GOOGLE_PRODUCT_NAME) // $1
.build();
Androidpublisher.Purchases purchases = publisher.purchases();
Androidpublisher.Purchases.Get get = purchases.get("android.test.purchased", "monthly001", "mytoken"); // $2
SubscriptionPurchase subscripcion = get.execute();
$1:来自 API 控制台的我的虚拟产品名称-> API 访问
$2:除此之外,androidpush API不允许通过服务帐户联系它,而只能通过 Web 服务器应用程序 auth flow 联系它,我不知道在 get- 方法的参数中插入什么。
这是 API: https ://developers.google.com/android-publisher/v1/purchases/get
问题
- 在这种情况下,包名称是什么,subscriptionId 是什么?
- 我在哪里获取/设置这些值?
阅读本文档后,我知道有一种方法可以处理虚假/静态响应。但是,如果这也适用于订阅,或者仅适用于移动设备上的应用内计费,我无法在任何地方阅读。
无论如何,我想知道为什么/是否有任何简单的方法可以使用沙箱或某物进行开发。类似。
我仍然觉得我只是错过了一个重要的部分来理解事情应该如何运作。也许你们中的某个人可以给我一个提示如何在这个地方进行,或者可以告诉我我错在哪里。
亲切的问候,
克里斯托弗