Spotify api没有搜索?
Posted
技术标签:
【中文标题】Spotify api没有搜索?【英文标题】:Spotify api not searching? 【发布时间】:2021-11-04 19:55:01 【问题描述】:我正在 codecademy 中开展一个项目,该项目可让您通过 spotify 创建播放列表,但是当我在搜索中键入内容时,什么都没有弹出。我假设它与 spotify api 相关。
我看到 spotify 改变了他们的端点,但我不太确定。控制台中没有任何内容显示任何错误。有什么帮助吗?
Spotify.js
const clientId = '**';
const redirectUri = 'http://localhost:3000'
let accessToken;
const Spotify =
getAccessToken()
if (accessToken)
return accessToken;
//check for access token match
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]);
//clears params, allowing to grab new access token when it expires
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.artist[0].name,
album: track.album.name,
uri: track.uri
))
)
,
savePlayList(name, trackUris)
if(!name || !trackUris.length)
return;
const accessToken = Spotify.getAccessToken();
const headers = Authorization: `Bearer $accessToken`;
let userId;
return fetch('https://api.spotify.com/v1/me', headers: headers
).then(response => response.json()
).then(jsonResponse =>
userId = jsonResponse.id;
return fetch(`https://api.spotify.com/v1/users/$userId/playlists`,
headers: headers,
method: 'POST',
body: JSON.stringify(name: name)
).then(response => response.json()
).then(jsonResponse =>
const playListId = jsonResponse.id;
return fetch(`https://api.spotify.com/v1/users/$userId/playlists/$playListId/tracks`,
headers: headers,
method: 'POST',
body: JSON.stringify(uris: trackUris)
)
)
)
export default Spotify;
【问题讨论】:
检查您的 devTools > 网络选项卡并检查您的 API 调用和响应。也许您可以通过检查请求的响应错误找到解决方案。 【参考方案1】:我发现 spotify api 改变了 json 响应。我将 artist: track.artist[0].name
中的 [0] 删除到 artist: track.artists.name
并且这有效。
【讨论】:
以上是关于Spotify api没有搜索?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用非高级帐户使用 Spotify API 搜索歌曲但不播放它们?