2014-01-29 242 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