spotify-web-api-node
Version:
A Node.js wrapper for Spotify's Web API
87 lines (76 loc) • 2.82 kB
JavaScript
const SpotifyWebApi = require('../');
/**
* This example refreshes an access token. Refreshing access tokens is only possible access tokens received using the
* Authorization Code flow, documented here: https://developer.spotify.com/spotify-web-api/authorization-guide/#authorization_code_flow
*/
/* Retrieve an authorization code as documented here:
* https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow
* or in the Authorization section of the README.
*
* Codes are given for a set of scopes. For this example, the scopes are user-read-private and user-read-email.
* Scopes are documented here:
* https://developer.spotify.com/documentation/general/guides/scopes/
*/
const authorizationCode =
'<insert authorization code with user-read-private and user-read-email scopes>';
/**
* Get the credentials from Spotify's Dashboard page.
* https://developer.spotify.com/dashboard/applications
*/
const spotifyApi = new SpotifyWebApi({
clientId: '<insert client id>',
clientSecret: '<insert client secret>',
redirectUri: '<insert redirect URI>'
});
// When our access token will expire
let tokenExpirationEpoch;
// First retrieve an access token
spotifyApi.authorizationCodeGrant(authorizationCode).then(
function(data) {
// Set the access token and refresh token
spotifyApi.setAccessToken(data.body['access_token']);
spotifyApi.setRefreshToken(data.body['refresh_token']);
// Save the amount of seconds until the access token expired
tokenExpirationEpoch =
new Date().getTime() / 1000 + data.body['expires_in'];
console.log(
'Retrieved token. It expires in ' +
Math.floor(tokenExpirationEpoch - new Date().getTime() / 1000) +
' seconds!'
);
},
function(err) {
console.log(
'Something went wrong when retrieving the access token!',
err.message
);
}
);
// Continually print out the time left until the token expires..
let numberOfTimesUpdated = 0;
setInterval(function() {
console.log(
'Time left: ' +
Math.floor(tokenExpirationEpoch - new Date().getTime() / 1000) +
' seconds left!'
);
// OK, we need to refresh the token. Stop printing and refresh.
if (++numberOfTimesUpdated > 5) {
clearInterval(this);
// Refresh token and print the new time to expiration.
spotifyApi.refreshAccessToken().then(
function(data) {
tokenExpirationEpoch =
new Date().getTime() / 1000 + data.body['expires_in'];
console.log(
'Refreshed token. It now expires in ' +
Math.floor(tokenExpirationEpoch - new Date().getTime() / 1000) +
' seconds!'
);
},
function(err) {
console.log('Could not refresh the token!', err.message);
}
);
}
}, 1000);