google api androidpublisher错误代码403

时间:2014-01-29 13:32:45

标签: java android google-api google-play

我遇到了以下问题,比如已经有一个月了,我正在尝试使用以下API验证inapp购买:https://developers.google.com/android-publisher/authorization

我按照文档中的每一步(使用Postman Rest Client从Chrome进行操作),我可以检索accessstoken和刷新令牌,但每当我尝试查询购买时,都会导致错误代码403访问未配置,但我在设定中确认了它!

任何有想法的人都可以吗?

2 个答案:

答案 0 :(得分:4)

获取此API的accessstoken远非直截了当。 This blog post帮助我开始朝着正确的方向前进,但我已经概述了我自己的流程,它不依赖于使用任何外部脚本来工作。步骤是:

  1. 获取客户端ID和密码(一次性)
  2. 获取刷新令牌(一次性)
  3. 使用刷新令牌获取访问令牌(每小时一次) 4使用访问令牌访问API
  4. 以下详述每个步骤:

    获取客户端ID和密钥

    1. 转到Google Developer's console
    2. 转到您的项目页面
    3. 选择左侧的“同意屏幕”,并确保已设置电子邮件地址和产品名称字段
    4. 从左侧菜单中选择“凭据”,然后选择“创建新的客户ID”
    5. 将应用程序类型设置为“Web应用程序”,并将“授权重定向URI”设置为https://localhost。您无需更改授权的JavaScript来源。
    6. 单击“创建客户端ID”并记录结果的客户端ID和客户端密码。
    7. 获取刷新令牌

      1. 在网络浏览器中,输入以下网址(用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. 然后,您将被重定向到这样的网址:

        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值

      6. 获取访问令牌

        1. https://accounts.google.com/o/oauth2/token发送POST请求并设置以下字段(替换REFRESH_TOKEN,CLIENT_ID,CLIENT_SECRET)
          • grant_type = refresh_token
          • refresh_token = REFRESH_TOKEN
          • CLIENT_ID = CLIENT_ID
          • client_secret = CLIENT_SECRET
        2. 您将获得一个包含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

          您也可以将访问令牌作为HTTP查询参数传递,例如

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

答案 1 :(得分: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