简而言之:
我是否可以从服务器端使用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 overview和google 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