【发布时间】:2022-11-18 18:50:07
【问题描述】:
在我的代码中,我试图连接到 Spotify 以获取他们的搜索结果,当用户输入艺术家、标题或专辑时,我正在尝试将我的 state.searchResults 更新为 Spotify 制作的曲目。我的 codecademy 前端课程大约进行了一半,这是我目前坚持的项目。 (也是堆栈溢出的新手)。如果有人可以帮助我,那就太好了!
let accessToken;
const clientId = '';
const redirectUri = "http://localhost:3000/";
const Spotify = {
getAccessToken() {
if (accessToken) {
return accessToken;
}
const accessTokenMatch = window.location.href.match(/access_token=([^&]*)/);
const expiresInMatch = window.location.href.match(/expires_in=([^&]*)/);
if(accessTokenMatch && expiresInMatch) {
accessToken = accessTokenMatch[1];
const expiresIn = Number(expiresInMatch[1]);
window.setTimeout(() => accessToken = '', expiresIn * 1000);
window.history.pushState('Access Token', null, '/');
return accessToken;
} else {
const accessUrl = `https://accounts.spotify.com/authorize?client_id=${clientId}&response_type=token&scope=playlist-modify-public&redirect_uri=${redirectUri}`;
window.location = accessUrl;
}
},
search(term) {
const accessToken = Spotify.getAccessToken();
return fetch(`https://api.spotify.com/v1/search?type=track&q=${term}`, {
headers: {
Authorization: `Bearer ${accessToken}`
}
}).then(response => {
return response.json();
}).then(jsonResponse => {
if (!jsonResponse.tracks) {
return [];
}
return jsonResponse.tracks.items.map(track => ({
id: track.id,
name: track.name,
artist: track.artists[0].name,
album: track.album.name,
uri: track.uri
}));
});
}
}
export default Spotify;
(我隐藏了 clientId,我在我的代码中设置了它。)
【问题讨论】: