2016-03-23 122 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