【问题标题】:Unable to get refresh token with google OAuth 2无法使用谷歌 OAuth 2 获取刷新令牌
【发布时间】:2016-07-10 15:29:43
【问题描述】:

情况

我有一个简单的 android 应用程序,用户使用 REST api 从 Google Fusion Tables 获取数据。为此,我使用 OAuth 2 授权来获取访问令牌和刷新令牌。我的应用程序中有网络视图,它将显示登录屏幕和同意屏幕。我计划从 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 帖子中的说明进行操作,并尝试从设置中撤消对应用程序的权限。我也尝试过使用不同的谷歌帐户以防出现一些权限问题,但仍然没有运气。我也尝试过删除查询参数“approval_prompt”和“grant_type”,但这也没有帮助。

【问题讨论】:

    标签: android oauth oauth-2.0 google-api access-token


    【解决方案1】:

    您需要提供access_type=offline 来请求刷新令牌,而不是在授权请求中指定grant_type=offline

    【讨论】:

    • 对不起,我在写的时候有错字。我已经编辑了问题。 “access_type=offline”查询已经存在!
    【解决方案2】:

    在搜索和敲打头 5-6 小时后,我得到了答案。 This答案救了我!回答将来寻找这个的人,

    请求获取访问令牌而不是交换时添加“access_type”=“offline”查询,即在请求同意的URL中。

    【讨论】:

      猜你喜欢
      • 2015-05-17
      • 2020-07-26
      • 2014-03-31
      • 2013-09-05
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 2015-10-11
      • 2013-07-20
      相关资源
      最近更新 更多