2012-10-19 59 views
3

我可以对access_token进行身份验证并获取相应的refresh_token,并且罚款(随后的API交互也很好)。无法在到期后刷新令牌

但是,我似乎只能够刷新令牌(POST/oauth/tokengrant_type=refresh_token)的access_token已经到期之前。到期后,相同的刷新代码(与文档中提供的代码完全相同)将返回错误invalid_grant

我使用soundcloud-ruby SDK FWIW,但我可以通过卷曲来重现它。另外,我发现Google Group的一些旧消息提到我可以申请一个不到期的令牌,但是我没有看到在文档中的任何地方提到过这个消息。这仍然是一个可行的选择吗?

回答

1

这是正确的。刷新令牌在访问令牌到期后不能使用。

在构建授权URL时,您可以通过指定scope=non-expiring来请求未到期的访问令牌。为了与Ruby的SDK做到这一点,只需通过附加PARAMS到authorize_url方法:

require 'soundcloud' 

client = Soundcloud.new(
    :client_id => 'YOUR_CLIENT_ID', 
    :client_secret => 'YOUR_CLIENT_SECRET', 
    :redirect_uri => 'REDIRECT_URI' 
) 

client.authorize_url(:scope => 'non-expiring') 

流的其余部分应该是完全一样的(抓住从查询字符串中的“代码”参数,并作出POST请求/oauth2/token)。

+6

如果刷新令牌在过期后无法用于请求访问令牌,那么SDK中的目的是什么?根据我在Oauth RFC中收集的内容,刷新令牌表达的意图是允许访问令牌再次获得,而无需用户重新授权。 – iplaybongos

+2

这是不正确的:与谷歌Oauth2你可以刷新令牌如果过期 –

+0

此非到期令牌不需要刷新有史以来? – 2015-08-29 14:57:17