1

我是使用网站 API 的新手。但是很长一段时间以来,我都想学习这个,今天从一个简单的例子开始,说明如何从 soundcloud 访问信息。这是他们网站上简单示例的代码

require 'rubygems'
gem 'soundcloud-ruby-api-wrapper'
require 'soundcloud'

gem 'oauth'
require 'oauth'


# Create a Soundcloud OAuth consumer token object
sc_consumer = Soundcloud.consumer('YOUR_APPLICATION_CONSUMER_TOKEN','YOUR_APPLICATION_CONSUMER_SECRET')

# Create an OAuth access token object
access_token = OAuth::AccessToken.new(sc_consumer, 'YOUR_OAUTH_ACCESS_TOKEN', 'YOUR_OAUTH_ACCESS_SECRET')

# Create an authenticated Soundcloud client, based on the access token
sc_client = Soundcloud.register({:access_token => access_token})

# Get the logged in user 
my_user = sc_client.User.find_me

# Display his full name
p "Hello, my name is #{my_user.full_name}"

我知道设置为:

  • 'YOUR_APPLICATION_CONSUMER_TOKEN'
  • 'YOUR_APPLICATION_CONSUMER_SECRET'

因为这是在 soundcloud 上注册应用程序时给出的。

我将 'YOUR_OAUTH_ACCESS_TOKEN' 设置为http://api.soundcloud.com/oauth/access_token 也写在 soundcloud 网站上,但我不知道从哪里获得

_YOUR_OAUTH_ACCESS_SECRET_来自。

这个访问密钥是否也是我从某个地方获得的随机字符串,我是否必须自己生成它。


编辑正如精英绅士的回答中所建议的那样,我还尝试了 Soundcloud 身份验证示例。我在这里发布了已经导致错误的代码:

require 'rubygems'
gem 'soundcloud-ruby-api-wrapper'
require 'soundcloud'

# oAuth setup code:  
# Enter your consumer key and consumer secret values here:
@consumer_application = {:key => 'QrhxUWqgIswl8a9ESYw', :secret => 'tqsUGUD3PscK17G2KCQ4lRzilA2K5L5q2BFjArJzmjc'}

# Enter the path to your audio file here.  
path_to_audio_file = "your/absolute/path/to/audio_file.ext"

# Set up an oAuth consumer.  
@consumer = OAuth::Consumer.new @consumer_application[:key], @consumer_application[:secret], 
{
  :site               => 'http://api.sandbox-soundcloud.com', 
  :request_token_path => '/oauth/request_token',
  :access_token_path  => '/oauth/access_token',
  :authorize_path     => '/oauth/authorize'
}

# Obtain an oAuth request token
puts "Get request token"
request_token = @consumer.get_request_token

然后我收到的错误消息是:

OAuth::未授权:401 未授权

consumer.rb 中的方法 token_request 第 217 行 consumer.rb 中的方法 get_request_token 第 139 行 test1.rb 第 25 行的顶层

这个简单的例子怎么会失败?

4

2 回答 2

2

这个问题的答案很简单。我的问题是我在 soundcloud 生产系统 soundcloud.com 上注册了我的应用程序,但我的请求指向了 sandbox-soundcloud.com。

我必须去 sandbox-soundcloud.com,注册一个新的用户帐户并制作一个新的客户端应用程序,一切都运行良好。

有关沙盒的更多信息,请访问:http: //github.com/soundcloud/api/wiki/Appendix-B-Sandbox

于 2010-11-24T14:26:00.567 回答
1

与 OAuth 一样,如果您希望最终用户通过您的应用程序访问 Soundcloud 的受保护资源,您必须向 Soundcloud 注册您的应用程序。

当您access_token使用 OAuth 从 Soundcloud 请求一个时,它将返回您access_token和一个oauth_token_secret. 这oauth_token_secret就是您提到的YOUR_OAUTH_ACCESS_SECRET

我不知道您对 OAuth 有多熟悉。文档可以在这里找到。


编辑OAuth 授权方案不久前更改,(例如,获取访问令牌需要您指定 a oauth_verifier)。

请参阅使用最新 OAuth 规范进行身份验证的 SoundCloud 示例。

于 2010-11-23T15:22:55.223 回答