5

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

但是,我似乎只能在实际过期之前POST刷新令牌( to /oauth/tokenwith grant_type=refresh_token) 。到期后,相同的刷新代码(与文档中提供的完全相同)返回错误.access_tokeninvalid_grant

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

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

4

1 回答 1

1

那是对的。访问令牌过期后无法使用刷新令牌。

scope=non-expiring您可以通过在构造授权 URL 时指定来请求未过期的访问令牌。要使用 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)。

于 2012-10-25T15:50:17.477 回答