in src/auth/ClientCredentialsStrategy.ts [47:76]
private async getTokenFromApi(): Promise<AccessToken> {
const options = {
grant_type: 'client_credentials',
scope: this.scopes.join(' ')
} as any;
const bodyAsString = Object.keys(options).map(key => key + '=' + options[key]).join('&');
const hasBuffer = typeof Buffer !== 'undefined';
const credentials = `${this.clientId}:${this.clientSecret}`;
const basicAuth = hasBuffer
? Buffer.from(credentials).toString('base64')
: btoa(credentials);
const result = await fetch("https://accounts.spotify.com/api/token", {
method: 'POST',
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": `Basic ${basicAuth}`
},
body: bodyAsString
});
if (result.status !== 200) {
throw new Error("Failed to get access token.");
}
const json = await result.json();
return json;
}