相关疑难解决方法(0)

从服务器端检查谷歌Android订阅

简而言之:我可以在服务器端使用Google Play Android Developer API,而无需在Play商店中提供任何应用程序吗?

背景:我正在开发一个项目,为每月订阅提供应用程序.每个订阅的相应数据(购买令牌,日期等)存储在后端数据库中.现在我想创建一个循环遍历每个数据集的cronjob.对于每个订阅,如果订阅仍然有效,我想联系Google API以检索信息,并更新与响应状态相对应的数据库.

对于后端逻辑,我使用google-api-java-client库.

要取消或验证订阅,我需要先使用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();
Run Code Online (Sandbox Code Playgroud)

1美元:我不知道给定的帐户范围是否有效.因为我只是在极少数示例中找到了这个值,但在本概述谷歌操场中都没有

$ 2我想这是必要的,尽管我发现很多例子没有提供这些信息.

但是,遗憾的是,当我提供无效数据(如错误的电子邮件或私钥)时,我看不出任何差异.

问题

  • 如何验证GoogleCredential是否正确?
  • 我可以在接下来的步骤中看到它,比如联系ie 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(); 
Run Code Online (Sandbox Code Playgroud)

$ 1:来自API控制台的虚拟产品名称- > API Access

$ 2:除了事实之外,androidpush API 不允许通过服务帐户联系它,但只能通过web服务器应用程序auth flow,我没有任何线索在get-方法的参数中插入什么. …

api android subscription in-app-billing

5
推荐指数
1
解决办法
5061
查看次数

标签 统计

android ×1

api ×1

in-app-billing ×1

subscription ×1