如何执行身份验证以验证Google In App订阅

时间:2017-10-09 14:06:37

标签: python google-api in-app-purchase google-oauth2

我想验证服务器端androidpublisher API的用户订阅。我们在App中订购了一个月的产品。我们遵循的循环在

之下
  • 用户将获得产品列表。如果他订阅了,他将获得完整的产品清单。否则他将只获得免费产品。
  • 当用户订阅时,他将从谷歌获得该购买的收据。收据将保存在我们的数据库中。每当用户要求产品列表时,该收据将通过Google API进行验证。如果有效,他将获得完整的结果。否则部分。

Google已为此目的提供了以下API。

  

获取https://www.googleapis.com/androidpublisher/v2/applications/ {packageName} / purchases / subscriptions / {subscriptionId} / tokens / {token}

此Api需要授权。我尝试了下面的代码

receipt_json = json.loads(subscription_object.receipt)
service = build(serviceName='androidpublisher', version='v2', developerKey='key')
response = service.purchases().subscriptions().get(
        packageName=receipt_json.get('packageName'),
        subscriptionId=receipt_json.get('productId'),
        token=receipt_json.get('purchaseToken'))

但我收到了以下回复

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

请指导我在验证收据之前如何执行授权。一个重点,我想在服务器端验证收据。不是客户端。因此,用户不会看到或点击任何链接以授权此请求。

1 个答案:

答案 0 :(得分:1)

您似乎并没有真正发送任何身份验证密钥/令牌。您可以尝试使用OAuth2凭据(访问令牌或刷新令牌)进行身份验证:

import httplib2
from googleapiclient.discovery import build
from oauth2client.client import OAuth2Credentials

credentials = OAuth2Credentials(...)
http = credentials.authorize(http=httplib2.Http())

service = build(serviceName='androidpublisher', version='v2', http=http)
相关问题