使用Axios调用Spotify API添加歌曲到播放队列报401错误
问题修复方案
你遇到的401未提供令牌错误,和令牌本身有效值无关,是代码两处核心写法错误导致服务端无法识别到你传入的认证信息:
- HTTP请求方法使用错误:向播放队列添加歌曲的接口要求使用
POST方法发起请求,你代码中调用的axios.patch()使用了错误的请求方法。 - axios参数传递位置错误:对于
post/patch/put等带请求体的请求方法,axios的参数签名为axios(请求地址, 请求体数据, 请求配置),你把存放Authorization头的配置对象放在了第二个参数(请求体)的位置,实际发起请求时根本没有将认证信息携带在请求头中,服务端自然拿不到令牌。
修正后的可运行代码如下:
const add = async () => { try { const url = `https://api.spotify.com/v1/me/player/queue?uri=${songUrl}&device_id=${deviceId}` // 该接口无需传入请求体,第二个参数传null,第三个参数传入带headers的配置 await axios.post(url, null, { headers: { Authorization: `Bearer ${to}` }, }) } catch (error) { console.log(error); } }
额外注意:参数中
songUrl必须传入符合规范的Spotify曲目URI,格式为spotify:track:对应曲目ID,不能直接传入网页端的歌曲访问链接,否则会触发参数格式错误。
内容的提问来源于stack exchange,提问作者KILLKEN
相关产品推荐
相关产品推荐

