1

Web サイトの API を使用するのは初めてです。しかし、長い間これを学びたいと思っていたので、今日はサウンドクラウドから情報にアクセスする方法の簡単な例から始めました。これは彼らのウェブサイトからの簡単な例のコードです

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」をsoundcloudの サイトにも書いてあったhttp://api.soundcloud.com/oauth/access_tokenに設定したのですが、

_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 無許可

217行目のconsumer.rbのメソッドtoken_request 139行目のconsumer.rbのメソッドget_request_token 25行目のtest1.rbのトップレベル

この単純な例はどのように失敗するのでしょうか?

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_tokenOAuth を使用して Soundcloud からをリクエストするとaccess_token、と が返されますoauth_token_secret。それoauth_token_secretはあなたがYOUR_OAUTH_ACCESS_SECRETとして言及したものです

あなたが OAuth にどれほど精通しているかはわかりません。ドキュメントはここにあります。


しばらく前に変更された OAuth 承認スキームを編集します (たとえば、アクセス トークンを取得するには を指定する必要がありますoauth_verifier)。

最新の OAuth 仕様を使用した認証に関する SoundCloud の例を参照してください。

于 2010-11-23T15:22:55.223 に答える