到期后无法刷新令牌

时间:2012-10-19 14:55:15

标签: ruby oauth soundcloud

我可以验证并获取access_token和相应的refresh_token罚款(后续API交互也很好)。

但是,我似乎只能在<{em> POST实际到期之前使用/oauth/token刷新令牌grant_type=refresh_tokenaccess_token 。到期后,相同的刷新代码(完全在文档中提供)将返回错误invalid_grant

我正在使用soundcloud-ruby SDK,FWIW,但我可以通过curl重现它。

顺便说一句,我发现谷歌集团提到的一些旧消息提到我可以请求一个不过期的令牌,但我没有在文档中的任何地方看到这一点。这仍然是一个可行的选择吗?

1 个答案:

答案 0 :(得分:1)

这是正确的。访问令牌过期后,无法使用刷新令牌。

您可以在构建授权URL时指定scope=non-expiring来请求未过期的访问令牌。要使用Ruby SDK执行此操作,只需将其他参数传递给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')

流程的其余部分应该完全相同(从查询字符串中获取'code'参数并向POST发出/oauth2/token请求。)