2013-10-18 57 views
2

原谅我,如果这是一个愚蠢的问题,新手程序员在这里。验证Rails应用程序瓦特/ Soundcloud,获取401未授权错误:invalid_grant

我想在我的Rails 3.2.14应用程序中使用Soundcloud API对用户进行身份验证。我直接使用的代码从的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时,这没有什么区别。

有什么建议吗?最近有没有人成功地将Rails与Soundcloud整合在一起?我发现的所有资源都显得过时了。

+0

我在我的应用程序中使用Soundcloud宝石,效果很好。我遵循同样的过程,所以我对这个错误感到困惑。当我尝试交换refresh_token以获取access_token时,我遇到了此错误。但使用非到期令牌修复它。我会检查client_id和client_secret是否准确。我也会打印出'代码'来检查它是否为空。 – Mahesh

回答

0

我得到这个错误,当我没有正确交换access_token的代码:使用pry检查变量并确保您的代码不为零

它在access_token过期时也显示出来,我知道您传入:scope =>'non-expiring',但可能会丢失参数在某一点