2016-03-23 120 views
2

形勢無法獲取刷新令牌與谷歌的OAuth 2

我有簡單的Android應用程序,其中用戶從Google Fusion Tables與REST API獲取數據。爲此,我使用OAuth 2授權獲取訪問令牌和刷新令牌。我在我的應用程序中將顯示登錄屏幕以及同意屏幕的Web視圖。我打算從Web視圖獲取訪問令牌並將其用於進一步的API調用。我正在使用retrofit來執行我的http調用。我使用以下查詢參數,

"client_id" = CLIENTID 
"client_secret" = SECRET 
"code" = 4/XXXXXXXXXX //Code got from redirect url 
"grant_type" = "authorization_code" 
"access_type" = "offline" 
"approval_prompt" = "force" 
"redirect_uri" = REDIRECT_URL 

到目前爲止這麼好。但是,當我exceute張貼上面的查詢參數的要求,我得到如下回應,

{ 
    "access_token": "ya29.XXXXXXXXXXXXXX", 
    "token_type": "Bearer", 
    "expires_in": 3599, 
    "id_token": "XXXXXXXXXX" 
} 

問題

哪裏是刷新令牌?我需要刷新令牌,因爲我以後不能使用訪問令牌通過應用程序進行API調用,並且我不希望用戶每次都獲取訪問令牌。

我已經試過

我已經按照指示從this後,並試圖從設置撤銷許可申請。我也嘗試過使用不同的Google帳戶,以防出現一些許可問題,但仍然沒有運氣。我也嘗試刪除查詢參數「approval_prompt」和「grant_type」,但也沒有幫助。

回答

0

我找到答案後,敲打頭5-6個小時。 This答案拯救了我!回答人的未來找這個,

添加「ACCESS_TYPE」 =「離線」的查詢,而請求訪問令牌,而不是在詢問同意URL交換,即。

0

而不是在授權請求中指定grant_type=offline,您需要提供access_type=offline來請求刷新令牌。

+0

對不起,我在寫字時有錯字。我編輯了問題。 「access_type = offline」查詢已經存在! – Dexter