Google Android发布商API以" 410 purchaseTokenNoLongerValid"错误

时间:2017-08-15 07:44:58

标签: android subscription google-play-developer-api

获取订阅状态(https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get)时,API会以

响应
{
  "error": {  
    "errors": [   
      {    
        "domain": "androidpublisher",    
        "reason": "purchaseTokenNoLongerValid",    
        "message": "The purchase token is no longer valid."   
      }  
    ],  
    "code": 410,  
    "message": "The purchase token is no longer valid." 
  }
}

我无法提及" purchaseTokenNoLongerValid"或者"购买令牌不再有效"在Android发布商API的上下文中,无论是在文档中还是在Google搜索中。

我可以猜出这个错误意味着什么,但更好地确切地知道,无论如何,在此错误之后我该如何处理订阅?

4 个答案:

答案 0 :(得分:16)

我最近收到了Google Play小组发来的这条消息,因此HTTP status 410将成为超过60天过期订阅的默认回复。

  

从2018年5月21日开始,Purchases.subscriptions.get将返回HTTP状态410,对于已过期60天或更长时间的订阅,响应中没有内容。对于尚未过期或已过期少于60天的有效订阅或已取消订阅,没有任何更改。

     

访问Android开发者网站,了解有关how to verify purchases

的更多信息

事实上,我在5月22日尝试了它,得到了状态410和本机构的回复:

{
    "error": {
        "errors": [
            {
                "domain": "androidpublisher",
                "reason": "subscriptionPurchaseNoLongerAvailable",
                "message": "The subscription purchase is no longer available for query because it has been expired for too long."
            }
        ],
        "code": 410,
        "message": "The subscription purchase is no longer available for query because it has been expired for too long."
    }
}

答案 1 :(得分:3)

我收到了Google Play支持小组关于此错误的正式回复:

  

我看一下,您提供的订单ID与现在已删除的帐户相关联。这就是为什么它没有通过验证。这是许可系统按预期工作的一个很好的例子。

     

您可以随意忽略此订阅。

在我询问更多细节之后又发了一封电子邮件:

  

从技术上讲,即使订阅没有附加到帐户,订阅仍然有效 - 因此,它不显示为已取消。我们知道,如果没有收到关于帐户状态的明确消息并且只是收到错误,则会让人感到困惑。这是我们仍在积极开展工作的产品领域。

     

您可以使用API​​撤销订阅,现在可以确认该帐户已经消失。然后它将被读取为已取消,并且在进行API调用时不会再出错。

答案 2 :(得分:1)

我认为Google刚刚更新了他们的API,并开始使用状态代码410响应带有购买令牌的请求,该令牌长时间未续订(没有订阅续订)。因此,他们肯定100%使用此类令牌的订阅将不会续订。

所以,这是一个好消息,因为现在你可以检测到这样的购买代币,如果你以前做过,就不要发送它们进行验证。

答案 3 :(得分:-1)

当用户从Google帐户更改密码或删除帐户时,似乎已撤消购买代币。然后,每次请求都会返回此错误。

以下是OAuth2令牌的原因列表 - https://developers.google.com/identity/protocols/OAuth2#expiration,但我觉得情况完全相同。

  • 用户已撤销访问权限。
  • 该令牌已使用六个月。
  • 用户更改了密码,令牌包含Gmail范围。
  • 用户帐户已超过一定数量的令牌请求。