2010-11-23 55 views
1

我是使用网站API的新手。但是很长一段时间我想学习这个,今天开始用一个简单的例子来说明如何从soundcloud获取信息。下面是简单的例子,从他们website如何获得连接到soundcloud api的“oauth访问秘密”

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::Unauthorized: 401 Unauthorized

method token_request in consumer.rb at line 217 method get_request_token in consumer.rb at line 139 at top level in test1.rb at line 25

这个简单的例子,怎能不?

回答

1

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

当您使用OAuth从Soundcloud请求access_token时,它会返回您并access_tokenoauth_token_secret。那oauth_token_secret就是你提到的_YOUR_OAUTH_ACCESS_SECRET_

我不知道你对OAuth有多熟悉。该文档可以找到here


编辑 OAuth授权方案改变了一段时间后,(例如获得访问令牌需要指定一个oauth_verifier)。

请参阅SoundCloud example on Authentication使用最新的OAuth规范。

+0

感谢您的快速答复。但我认为你不明白我的问题是什么,也许是因为它太简单了。为了请求access_token(access_token = OAuth :: AccessToken.new(sc_consumer,'YOUR_OAUTH_ACCESS_TOKEN','YOUR_OAUTH_ACCESS_SECRET'))我已经必须知道** YOUR_OAUTH_ACCESS_SECRET **你明白我的意思了吗? – dedan 2010-11-23 16:26:22

+0

@dedan,对于你的问题,答案是肯定的,但这似乎是一个旧的OAuth身份验证方案。查看我编辑过的帖子以获取更多 – 2010-11-23 16:32:30

2

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

我不得不去sandbox-soundcloud.com,注册一个新的用户帐户,并创建一个新的客户端应用程序,并且一切正常。

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

相关问题