A meteor wrapper for Spotify's web API via the wonderful spotify-web-api-node.
Check out an example (examples/1 folder) here: http://spotify-web-api-example.meteor.com
meteor add xinranxiao:spotify-web-api
1) Setup your clientId + clientSecret, either via the service-configuration
package or directly through the api.
// This example is via `service-configuration`
ServiceConfiguration.configurations.update(
{ "service": "spotify" },
{
$set: {
"clientId": "<your clientId>",
"secret": "<your secret>"
}
},
{ upsert: true }
);
2) Get an oauth access_token
, either through xinranxiao:accounts-spotify
, or directly through this API (refer here.
) for how).
3) Make a new instance of the API and use it! Currently only available on the server.
var spotifyApi = new SpotifyWebApi();
// credentials are optional
var spotifyApi = new SpotifyWebApi({
clientId : 'fcecfc72172e4cd267473117a17cbd4d',
clientSecret : 'a6338157c9bb5ac9c71924cb2940e1a7',
redirectUri : 'http://www.example.com/callback'
});
// Get Elvis' albums `synchronously` on the server.
var response = spotifyApi.getArtistAlbums('43ZHCT0cAZBISjO8DG9PnE');
console.log(response);
// Or use a classic callback approach.
// Note that the OPTIONS parameter is always required for this format!
spotifyApi.getArtistAlbums('43ZHCT0cAZBISjO8DG9PnE', {}, function(err, result) {
console.log(result);
});
4) Your access_token
will expire at some point.
// Just refresh the token and manually deal with the response.
// response contains the new access_token and the new expire_in
var response = spotifyApi.refreshAccessToken();
// Refresh the access token, update the current instance with the token,
// and update the user's credentials as well.
spotifyApi.refreshAndUpdateAccessToken(); // All done here.
Currently, this package automatically sets the clientId
and clientSecret
if you have service-configuration
configured. It also sets accessToken
and refreshToken
if you have a user connected with Spotify via xinranxiao:accounts-spotify
(this won't work if you have your code inside a publication).
If you have any problems with or suggestions for this package, please create a new issue.