4

我目前正在研究一种仅通过 HTTP 请求调用使用 Google 购买状态 API 的方法,但我遇到了障碍。我有一个 Google Play 应用设置,以及 Google Console 帐户的所有权。

基本上,我只想检查用户在我的服务器上的购买状态。我应该使用的唯一信息是购买令牌、产品 ID 和产品包。

我已经在 developer.android.com/google/play/billing/gp-purchase-status-api.html 上关注了所有关于这样做的文档

我尝试进行的 HTTPS 请求调用是这样的(产品名称和实际字符串被替换):

googleapis.com/androidpublisher/v1.1/applications/(com.product.myproduct)/inapp/(com.product.myproduct.product1)/purchases/(myproductpurchasestring)?access_token=(myaccesstokenstring)

我的回答总是这样:

{
 "error": {
  "errors": [
   {
    "domain": "androidpublisher",
    "reason": "developerDoesNotOwnApplication",
    "message": "This developer account does not own the application."
   }
  ],
  "code": 401,
  "message": "This developer account does not own the application."
 }
}

通过此 http 请求调用轮询我的访问令牌时:googleapis.com/oauth2/v1/tokeninfo?access_token=(myaccesstokenstring)

这是我的回应:

{
 "issued_to": "12345.apps.googleusercontent.com",
 "audience": "12345.apps.googleusercontent.com",
 "scope": "https://www.googleapis.com/auth/androidpublisher",
 "expires_in": 3319,
 "access_type": "offline"
}

因此,根据https://developers.google.com/accounts/docs/OAuth2#webserver上的文档,我需要:

  1. 授权自己并检索从 Google API 控制台的 API 访问部分中的“Web 应用程序的客户端 ID”生成的可刷新访问令牌。我已经做到了。

  2. 通过以下两种方式之一使用此访问令牌进行 google API 调用:将字符串附加到 HTTP 标头“授权”,或作为带有属性 access_token=(mytokenstring) 的 HTTPS 请求本身的一部分。这部分对我不起作用,我总是收到未经授权的消息。





我想我的问题是:是否可以使用简单的 HTTPS 请求调用(没有外部库支持)来检索已购买项目的状态,而无需用户在后端服务器上进行交互?

我真的很感激任何帮助,大多数其他线程都是关于如何获取刷新令牌的,但我已经介绍过。

4

1 回答 1

1

好的,我在同事的帮助下发现了自己的问题。基本上,我的访问令牌是在一个未以任何方式链接到项目的帐户下生成的。在生成访问令牌时使用项目的 google 帐户的所有者是最安全的。

呸!

于 2013-10-08T07:05:41.887 回答