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

简而言之:
我是否可以从服务器端使用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美元:我不知道给定的帐户范围是否有效.因为我只是在很少的例子中找到了这个值,但是在this overviewgoogle playground都没有

$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(); 

1美元:我的虚拟产品名称来自API console -> API Access

$2:除了事实,androidpush API执行not allow contacting it via service accounts,but only via web server applications auth flow,我没有任何线索在get-方法的参数中插入什么.

这是API:
https://developers.google.com/android-publisher/v1/purchases/get

问题

>什么是包名称以及此上下文中的subscriptionId是什么?
>我在哪里获取/设置这些值?

阅读this document后,我知道有办法处理假/静态响应.但是,如果这也适用于订阅,或者只是仅针对移动设备上的应用内帐单,我无法阅读.

我想知道为什么/如果有任何简单的方法用沙盒或s.th.开发. simliar.

我仍然觉得我只是缺少很大的一部分来理解事情应该如何运作.
也许你们中的某个人可以给我一个如何在这个地方继续前进的提示,或者可以说我在哪里错了.

亲切的问候,

克里斯托弗

最佳答案
我现在可以弄清楚我以前的大部分理解问题.

= 1 =生成授权URL

String authorizeUrl = new GoogleAuthorizationCodeRequestUrl(googleClientId,callbackUrl,"https://www.googleapis.com/auth/androidpublisher").build()    
// See why: https://stackoverflow.com/questions/8433990/when-authenticating-with-oauth-and-youtube-always-get-error-invalid-grant-on
authorizeUrl += "&approval_prompt=force&access_type=offline"

= 2 = AUTHENTICATE

由于server-webflow不适用于androidpublisher API,因此客户现在必须手动调用(1)中生成的URL.

= 3 = CALLBACK

谷歌回调应该处理下一步.回调包含我们必须使用的参数“code”.

= 4 =请求AUTH-TOKEN

    // Build the HTTP parameter
    Map

= 5 =请求刷新令牌

    // Build the HTTP parameter
    Map

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...