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:限制搜索结果

有没有办法使用非高级帐户使用 Spotify API 搜索歌曲但不播放它们?

Spotify API:搜索中的随机性

在 Spotify 的搜索 API 中按艺术家搜索的正确 python 语法?

Spotify 公共搜索 API

Spotify iPhone API 搜索播放列表