2010-11-23 14 views
1

Ich bin neu in der Verwendung von APIs von Websites. Aber seit langem wollte ich das lernen und begann heute mit dem einfachen Beispiel, wie man auf Informationen von soundcloud zugreifen kann. Hier ist der Code von dem einfachen Beispiel von ihren websiteWie bekomme ich das "oauth access secret" für eine Verbindung zur soundcloud 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}" 

Ich weiß, was wie zu setzen:

  • 'YOUR_APPLICATION_CONSUMER_TOKEN'
  • 'YOUR_APPLICATION_CONSUMER_SECRET'

wie diese gegeben wurde wenn Sie eine Anwendung auf Soundcloud registrieren.

ich den ‚YOUR_OAUTH_ACCESS_TOKEN‘ zu http://api.soundcloud.com/oauth/access_token die auch auf der Website Soundcloud geschrieben wurde, aber ich habe keine Ahnung, wo die

_YOUR_OAUTH_ACCESS_SECRET_ von bekommen.

Ist dieses Zugriffsgeheimnis auch eine zufällige Zeichenfolge, die ich von irgendwo bekomme, muss ich es selbst generieren.


EDIT Wie in der Antwort der Elite Herren schlug ich auch versucht, das Soundcloud Beispiel auf Authentifizierung. Ich poste hier das Stück Code, der bereits zu dem Fehler führt:

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 

Die Fehlermeldung erhalte ich dann:

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

Wie kann dieses einfache Beispiel fehlschlagen?

Antwort

1

Wie bei OAuth müssen Sie Ihre Anwendung bei Soundcloud registrieren, wenn Sie möchten, dass der Endbenutzer über Ihre Anwendung auf geschützte Ressourcen von Soundcloud zugreift.

Wenn Sie von Soundcloud mit OAuth eine access_token anfordern, werden Sie und access_token und eine oauth_token_secret zurückgeben. Das oauth_token_secret ist, was man als erwähnt _YOUR_OAUTH_ACCESS_SECRET_

Ich weiß nicht, wie vertraut Sie mit OAuth sind. Die Dokumentation finden Sie unter here.


bearbeiten OAuth Genehmigungsregelung geändert, um eine Weile zurück, (zum Beispiel ein Zugriffstoken bekommen Sie erfordert eine oauth_verifier angeben).

Siehe SoundCloud example on Authentication unter Verwendung der neuesten OAuth-Spezifikation.

+0

Danke für die schnelle Antwort. Aber ich denke du hast mein Problem nicht verstanden, vielleicht weil es zu einfach ist. Um das access_token anzufordern (access_token = OAuth :: AccessToken.new (sc_consumer, 'YOUR_OAUTH_ACCESS_TOKEN', 'YOUR_OAUTH_ACCESS_SECRET')) muss ich bereits die ** YOUR_OAUTH_ACCESS_SECRET kennen ** Weißt du was ich meine? – dedan

+0

@dedan, für Ihre Frage ist die Antwort ja, aber das scheint wie ein altes OAuth-Authentifizierungsschema zu sein. Sehen Sie meinen bearbeiteten Post für mehr an. –

+0

ok, ich werde dieses neue Beispiel ausprobieren, das du morgen in deinem Edit gepostet hast. Ich habe mich nur gewundert, denn der, den ich verwendet habe, wurde zuletzt am 13. September 2010 bearbeitet. Vielen Dank, ich werde meine Ergebnisse hier morgen veröffentlichen – dedan

2

Die Antwort auf die Frage ist sehr einfach. Mein Problem war, dass ich meine Anwendung auf dem Soundcloud-Produktionssystem soundcloud.com registriert hatte, aber meine Anfragen gegen sandbox-soundcloud.com richtete.

Ich musste zu sandbox-soundcloud.com gehen, ein neues Benutzerkonto registrieren und eine neue Client-Anwendung machen und alles hat perfekt funktioniert.

Mehr Informationen über die Sandbox finden Sie hier: http://github.com/soundcloud/api/wiki/Appendix-B-Sandbox

+0

Ich bin mir nicht sicher, ob diese Informationen auf dem neuesten Stand sind, aber es hat begonnen, mir einige Geheimnisse zu erklären. –

Verwandte Themen