UNPKG

spotify-web-api-node

Version:
87 lines (76 loc) 2.82 kB
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);