UNPKG

spotify-web-api-node

Version:
102 lines (88 loc) 2.88 kB
/** * This example is using the Authorization Code flow. * * In root directory run * * npm install express * * then run with the followinng command. If you don't have a client_id and client_secret yet, * create an application on Create an application here: https://developer.spotify.com/my-applications to get them. * Make sure you whitelist the correct redirectUri in line 26. * * node access-token-server.js "<Client ID>" "<Client Secret>" * * and visit <http://localhost:8888/login> in your Browser. */ const SpotifyWebApi = require('../../'); const express = require('../../node_modules/express'); const scopes = [ 'ugc-image-upload', 'user-read-playback-state', 'user-modify-playback-state', 'user-read-currently-playing', 'streaming', 'app-remote-control', 'user-read-email', 'user-read-private', 'playlist-read-collaborative', 'playlist-modify-public', 'playlist-read-private', 'playlist-modify-private', 'user-library-modify', 'user-library-read', 'user-top-read', 'user-read-playback-position', 'user-read-recently-played', 'user-follow-read', 'user-follow-modify' ]; const spotifyApi = new SpotifyWebApi({ redirectUri: 'http://localhost:8888/callback', clientId: process.argv.slice(2)[0], clientSecret: process.argv.slice(2)[1] }); const app = express(); app.get('/login', (req, res) => { res.redirect(spotifyApi.createAuthorizeURL(scopes)); }); app.get('/callback', (req, res) => { const error = req.query.error; const code = req.query.code; const state = req.query.state; if (error) { console.error('Callback Error:', error); res.send(`Callback Error: ${error}`); return; } spotifyApi .authorizationCodeGrant(code) .then(data => { const access_token = data.body['access_token']; const refresh_token = data.body['refresh_token']; const expires_in = data.body['expires_in']; spotifyApi.setAccessToken(access_token); spotifyApi.setRefreshToken(refresh_token); console.log('access_token:', access_token); console.log('refresh_token:', refresh_token); console.log( `Sucessfully retreived access token. Expires in ${expires_in} s.` ); res.send('Success! You can now close the window.'); setInterval(async () => { const data = await spotifyApi.refreshAccessToken(); const access_token = data.body['access_token']; console.log('The access token has been refreshed!'); console.log('access_token:', access_token); spotifyApi.setAccessToken(access_token); }, expires_in / 2 * 1000); }) .catch(error => { console.error('Error getting Tokens:', error); res.send(`Error getting Tokens: ${error}`); }); }); app.listen(8888, () => console.log( 'HTTP Server up. Now go to http://localhost:8888/login in your browser.' ) );