import webbrowser import scapi # the host to connect to. Normally, this # would be api.soundcloud.com API_HOST = "api.soundcloud.com" # This needs to be the consumer ID you got from # http://soundcloud.com/settings/applications/new CONSUMER = "2CLCxcSXYzx7QhhPVHN4A" # This needs to be the consumer secret password you got from # http://soundcloud.com/settings/applications/new CONSUMER_SECRET = "pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs" # first, we create an OAuthAuthenticator that only knows about consumer # credentials. This is done so that we can get an request-token as # first step. oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, CONSUMER_SECRET, None, None) # The connector works with the authenticator to create and sign the requests. It # has some helper-methods that allow us to do the OAuth-dance. connector = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) # First step is to get a request-token, and to let the user authorize that # via the browser. token, secret = connector.fetch_request_token() authorization_url = connector.get_request_token_authorization_url(token) webbrowser.open(authorization_url) oauth_verifier = raw_input("please enter verifier code as seen in the browser:") # Now we create a new authenticator with the temporary token & secret we got from # the request-token. This will give us the access-token oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, CONSUMER_SECRET, token, secret) # we need a new connector with the new authenticator! connector = scapi.ApiConnector(API_HOST, authenticator=oauth_authenticator) token, secret = connector.fetch_access_token(oauth_verifier) # now we are finally ready to go - with all four parameters OAuth requires, # we can setup an authenticator that allows for actual API-calls. oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, CONSUMER_SECRET, token, secret) # we pass the connector to a Scope - a Scope is essentially a path in the REST-url-space. # Without any path-component, it's the root from which we can then query into the # resources. root = scapi.Scope(scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)) # Hey, nice meeting you! Connected to SoundCloud using OAuth will allow you to access protected resources, like the current user's name. print "Hello, %s" % root.me().username