www.googleapis.com/androidpublisher/v1/上的GET 500内部服务器错误

时间:2012-10-08 10:48:03

标签: android api subscription

最后,我可以解析我的recent problems处理OAuth2身份验证以访问google API。

但现在我在查询android开发人员API以检索有关订阅的状态信息时遇到困难。 我正在使用以下REST API调用:

https://www.googleapis.com/androidpublisher/v1/applications/ APP_PACKAGE /订阅/的 SUBSCRIPTION_ID /购买/的 PURCHASE_TOKEN ?的access_token = AUTH_TOKEN < / p>

  • APP_PACKAGE 我上传到developer console的应用程序的包名称
  • SUBSCRIPTION_ID 为应用(开发者控制台)指定的订阅ID
  • PURCHASE_TOKEN (虚拟)购买代币
  • AUTH_TOKEN 从OAuth2检索到的身份验证令牌。

我检索此请求的身份验证令牌如下:

// Build the HTTP parameter
Map<String,String> params = [:]
params.put("grant_type", "refresh_token")
params.put("refresh_token", googleRefreshToken.encodeAsURL())
params.put("client_id", googleClientId.encodeAsURL())
params.put("client_secret", googleClientSecret.encodeAsURL())

// Send the POST request
// This action might throw an exception in case any parameter were wrong, invalid or not specified.
String result = HttpRequestHandler.sendRequest("https://accounts.google.com/o/oauth2/token", params);
JSONElement jsonResult = JSON.parse(result)

这很好用,但上面提到的REST调用返回500错误 - 没有任何给定的消息。

{
  "error": {
    "code": 500,
    "message": null
  }
}

我读到有些人几乎有类似的问题,但只有在联系cancel API时才会这样。

一些信息:

  • 属于客户端ID的Google用户也是Android应用的所有者
  • 该应用尚未发布
  • 该应用授予com.android.vending.BILLING访问权限
  • 我还在应用
  • 中实现了虚拟BillingService和BillingReceiver

由于我没有检索到任何错误消息,我现在真的不知道如何继续。 有没有人知道这个问题?

编辑1

在玩各种测试用例时,我得到了非常奇怪的结果。 例如: 如果我使用&lt; = 7个字符的PURCHASE_TOKEN,那么我收到以下回复:

{
  "error": {
    "errors": [
     {
      "domain": "global",
      "reason": "notFound",
      "message": "The subscription purchase token was not found.",
      "locationType": "parameter",
      "location": "token"
     }
    ],
   "code": 404,
   "message": "The subscription purchase token was not found."
  }
}

当我使用PURCHASE_TOKEN时,我仍然会收到500错误&gt; 7个字符。 就像从here复制的示例令牌一样: rojeslcdyyiapnqcynkjyyjh

编辑2

每次在这里,然后服务器甚至会随机响应503后端错误。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error"
   }
  ],
  "code": 503,
  "message": "Backend Error"
 }
}

编辑3

如果我使用Java API(而不是直接URL调用),我会得到相同的错误。

// Build token for the response
TokenResponse tokenResponse = new TokenResponse();
tokenResponse.setAccessToken(googleAccessToken);
tokenResponse.setRefreshToken(googleRefreshToken);
tokenResponse.setExpiresInSeconds(3600L);
tokenResponse.setScope(OAuth2Handler.SCOPE_ANDROID_PUBLISHER);
tokenResponse.setTokenType("Bearer");

// Init credential container
HttpRequestInitializer credential =  new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setClientSecrets(googleClientId, googleClientSecret)
.build()
.setFromTokenResponse(tokenResponse);

// Connect to the android publisher API
Androidpublisher publisher = new Androidpublisher.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
    .setApplicationName("NameOfMyApplicationInGooglePlayStore")
    .build();

// Retrieve subscription purchase information
Androidpublisher.Purchases purchases = publisher.purchases();
Androidpublisher.Purchases.Get get = purchases.get(
    packageName,
    subscriptionId,
    purchaseToken
);

// Analyse result
SubscriptionPurchase subscription = get.execute();        

亲切的问候,  克里斯托弗

0 个答案:

没有答案