mirror of
https://gitlab.com/deeplydrumming/DeemixFix.git
synced 2026-01-15 16:32:59 -03:00
87 lines
2.8 KiB
JavaScript
87 lines
2.8 KiB
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);
|