情况
我有一个简单的Android应用,用户可以使用REST API从Google Fusion Tables获取数据。为此,我使用了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
到目前为止,一切都很好。但是当我使用上述查询参数执行发布请求时,得到以下响应,
{
"access_token": "ya29.XXXXXXXXXXXXXX",
"token_type": "Bearer",
"expires_in": 3599,
"id_token": "XXXXXXXXXX"
}
题
刷新令牌在哪里?我需要刷新令牌,因为以后无法使用访问令牌通过应用程序进行API调用,并且我不希望用户每次都获得访问令牌。
我尝试过的
我已经按照this帖子中的说明进行操作,并尝试撤消设置中的应用程序权限。我也尝试过使用其他的Google帐户,以防万一出现权限问题,但还是没有运气。我也尝试删除查询参数“ approval_prompt”和“ grant_type”,但这也无济于事。
最佳答案
搜索并敲打头部5-6小时后,我得到了答案。 This答案救了我!回答将来有需要的人,
在请求访问令牌而不是交换时(即在要求同意的URL中)添加“ access_type” =“离线”查询。