2

如果这是一个愚蠢的问题,请原谅我,这里是新手程序员。

我正在尝试使用 Soundcloud API 在我的 Rails 3.2.14 应用程序中对用户进行身份验证。我直接使用 Soundcloud 开发人员文档中的代码,如下所示:

client = Soundcloud.new(
                    :client_id => 'MY_CLIENT_ID',
                    :client_secret => 'MY_CLIENT_SECRET',
                    :redirect_uri => 'http://localhost:3000/auth/soundcloud/callback'
                    )

# redirect user to authorize URL
redirect_to client.authorize_url(:scope => 'non-expiring')

当我获取回调 URI 时:

client = Soundcloud.new(
                    :client_id => 'MY_CLIENT_ID',
                    :client_secret => 'MY_CLIENT_SECRET',
                    :redirect_uri => 'http://localhost:3000/auth/soundcloud/callback'
                    )

# exchange authorization code for access token
code = params[:code]
access_token = client.exchange_token(:code => code)

一切正常(我被带到 Soundcloud 页面以授予我的应用程序权限)但是当我被发送回回调 URI 时,我收到以下错误:

SoundCloud::ResponseError at /auth/soundcloud/callback
HTTP status: 401 Unauthorized Error: invalid_grant

我显然已经用谷歌搜索了这个,唯一的建议是我的令牌即将到期。这对我来说没有意义,因为我稍后不会重用 access_token,我只是在进行初始身份验证。以防万一我在重定向到 Soundcloud 时包含了 scope => non-expiring 参数,这没有任何区别。

有什么建议么?最近有没有人成功地将 Rails 与 Soundcloud 集成?我发现的所有资源似乎都已经过时了。

4

1 回答 1

0

I got this error, when I was not exchanging the :code for the access_token correctly. Check your variables using pry and make sure your :code is not nil

its also shows up when the access_token has expired, I know you are passing in :scope => 'non-expiring', but perhaps it loses the parameter at some point

于 2014-07-18T04:31:23.113 回答