node.js wrapper for the Soundcloud SDK. Inspired by the libraries soundcloud-node and soundclouder.js.
npm install --save node-soundcloud
var SC = require('node-soundcloud')
- Require
node-soundcloud
and initialize with your parameters - Redirect user to the necessary SoundCloud Connect URL
- User will then be redirected to your
redirect_uri
, which can be handled by an Express endpoint (discussed in the next section).
var SC = require('node-soundcloud');
// Initialize client
SC.init({
id: 'your SoundCloud client ID',
secret: 'your SoundCloud client secret',
uri: 'your SoundCloud redirect URI'
});
// Connect user to authorize application
var initOAuth = function(req, res) {
var url = SC.getConnectUrl();
res.writeHead(301, { location: url });
res.end();
};
// Get OAuth token (example endpoint discussed in the next section)
After your user is redirected to the Connect URL, SoundCloud will then redirect them back to the URL you have specified as your redirect_uri
. There will also be the parameter code
in the query string, and this is used to retrieve your OAuth token. An endpoint to handle this could work as follows:
var redirectHandler = function(req, res) {
var code = req.query.code;
SC.authorize(code, function(err, accessToken) {
if ( err ) {
throw err;
} else {
// Client is now authorized and able to make API calls
console.log('access token:', accessToken);
}
});
};
If you have already acquired an OAuth access token, you can initialize the client without going through the authorization process by passing it as an extra option:
var SC = require('node-soundcloud');
// Initialize client with additional accessToken field
SC.init({
id: 'your SoundCloud client ID',
secret: 'your SoundCloud client secret',
uri: 'your SoundCloud redirect URI',
accessToken: 'your existing access token'
});
Once authorized (or if you're accessing unprotected endpoints), you may now make calls to the SoundCloud API documented here. An example could be as follows:
SC.get('/tracks/276882056', function(err, track) {
if ( err ) {
throw err;
} else {
console.log('track retrieved:', track);
}
});