获取订阅状态(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搜索中。
我可以猜出这个错误意味着什么,但更好地确切地知道,无论如何,在此错误之后我该如何处理订阅?
答案 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,但我觉得情况完全相同。