Skip to content

Instantly share code, notes, and snippets.

@Uvacoder
Forked from zrachlin/refreshTokens.js
Created June 16, 2024 22:41
Show Gist options
  • Select an option

  • Save Uvacoder/03bd2b422987804793ffafb91a736e16 to your computer and use it in GitHub Desktop.

Select an option

Save Uvacoder/03bd2b422987804793ffafb91a736e16 to your computer and use it in GitHub Desktop.
export const refreshTokens = async () => {
try {
const credentials = await getSpotifyCredentials() //we wrote this function above
const credsB64 = btoa(`${credentials.clientId}:${credentials.clientSecret}`);
const refreshToken = await getUserData('refreshToken');
const response = await fetch('https://accounts.spotify.com/api/token', {
method: 'POST',
headers: {
Authorization: `Basic ${credsB64}`,
'Content-Type': 'application/x-www-form-urlencoded',
},
body: `grant_type=refresh_token&refresh_token=${refreshToken}`,
});
const responseJson = await response.json();
if (responseJson.error) {
await getTokens();
} else {
const {
access_token: newAccessToken,
refresh_token: newRefreshToken,
expires_in: expiresIn,
} = responseJson;
const expirationTime = new Date().getTime() + expiresIn * 1000;
await setUserData('accessToken', newAccessToken);
if (newRefreshToken) {
await setUserData('refreshToken', newRefreshToken);
}
await setUserData('expirationTime', expirationTime);
} catch (err) {
console.error(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment