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 = '' /** * Get the credentials from Spotify's Dashboard page. * https://developer.spotify.com/dashboard/applications */ const spotifyApi = new SpotifyWebApi({ clientId: '', clientSecret: '', redirectUri: '' }) // 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)