2014-01-29 241 views
3

我与像1个月已经下列问题stucking,我尝试使用下面的API来验证应用程式内购买:https://developers.google.com/android-publisher/authorization谷歌API androidpublisher错误代码403

我跟着从文档每一步(做寄托都与Chrome的Postman Rest客户端),我可以检索accesstoken和刷新令牌,但每当我尝试查询购买时,都会导致未配置错误代码403访问权限,但是我在设置中严格限制了它!

任何人有想法也许?

+0

检查HT有关Google库的解决方案,请访问http://stackoverflow.com/a/24264696/165708。 –

回答

4

获取此API的访问权限并不简单。 This blog post帮助我开始了正确的方向,但是我已经概述了我自己的过程,它不依赖于使用任何外部脚本来工作。步骤如下:

  1. 获取客户端ID和秘密(一次性)
  2. 获取刷新令牌(一次性)
  3. 使用刷新令牌来获得访问令牌(每小时一次) 4使用访问令牌以访问API

每个步骤详细说明如下:

获取客户端ID和密钥

  1. 转到了Google Developer's console
  2. 转到您的项目页面
  3. 选择“同意画面”的左边,并确保该电子邮件地址和产品名称字段设置
  4. 选择“凭证“,然后选择”创建新客户端ID“
  5. 将应用程序类型设置为”Web应用程序“并将”授权重定向URI“设置为https://localhost。您无需更改授权JavaScript起源。
  6. 单击“创建客户端ID”并记录结果的客户端ID和客户端密钥。

获取刷新令牌

  1. 在Web浏览器,输入以下URL(替代CLIENT_ID修正值): https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=https://localhost&client_id=XXXX

  2. 接受授权出现

    任何请求
  3. 然后您将被重定向到这样的URL:

    https://localhost/?code=4/k0TenvwICIgmBoQOazJy4_EnJr6-.clLqtp_vVAIbEnp6UAPFm0GASPqQigI

    复制此网址的后半部分

  4. 使用wget来把这段代码转换成刷新令牌代码;替代CODE,CLIENT_ID和CLIENT_SECRET

    wget --debug --post-data="grant_type=authorization_code&code=CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=https://localhost" https://accounts.google.com/o/oauth2/token

  5. 所得JSON文件将包含一个的access_token和refresh_token。记录refresh_token值

获取访问令牌

  1. 发送POST请求来https://accounts.google.com/o/oauth2/token与设置以下字段(替代REFRESH_TOKEN,CLIENT_ID,CLIENT_SECRET)
    • grant_type = refresh_token
    • refresh_token = REFRESH_TOKEN
    • client_id = CLI ENT_ID
    • client_secret = CLIENT_SECRET

你会得到一个包含该的access_token将是很好的一小时JSON字符串。

使用访问令牌才能API请求

取从

https://www.googleapis.com/androidpublisher/v1.1/applications/PACKAGENAME/inapp/SKU/purchases/PURCHASETOKEN

包含访问令牌的Authorization头,如:

Authorization: Bearer ya29.1.AADtN_WoM4-4Fb1voFL-emcUWluijCzwvc9Z-FYM9SPvK03HCbGkdROJTVVPSLHK2IlVJQ

你也可能能够通过t他访问令牌作为HTTP查询参数,例如

https://www.googleapis.com/androidpublisher/v1.1/applications/PACKAGENAME/inapp/SKU/purchases/PURCHASETOKEN?authorization_token=AUTHTOKEN

0

我也有类似的问题,因为你。通过回答mmigdol是有帮助的,但它没有帮助我。我终于通过看这里生成的链接来解决这个问题:显然https://developers.google.com/oauthplayground/

,Android的发行范围

https://www.googleapis.com/auth/androidpublisher 

需要被添加到请求授权码,加入(甚至产生刷新令牌之前)的链接:

&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher 

得到这个:

https://accounts.google.com/o/oauth2/auth?redirect_uri=<YOUR_REDIRECT_URI>&response_type=code&client_id=<YOUR_CLIENT_ID>&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&approval_prompt=force&access_type=offline