我正在尝试使用此端点向播放队列添加歌曲:
const add = async () => {
try {
const url = `https://api.spotify.com/v1/me/player/queue?uri=${songUrl}&device_id=${deviceId}`
await axios.patch(url, {
headers: {
Authorization: `Bearer ${to}`
},
})
} catch (error) {
console.log(error);
}
}
我得到一个状态401错误,有一条消息说没有提供令牌。但是当我console.log这个令牌时,它出现了。
我还没有使用Spotify API,但是,根据他们的文档,您需要发送POST请求,而不是PATCH,这是您使用的。
用axios.post()
代替axios.patch()
:
const add = async (songUrl, deviceId, token) => {
try {
const url = `https://api.spotify.com/v1/me/player/queue?uri=${songUrl}&device_id=${deviceId}`;
await axios.post(url, {
headers: {
Authorization: `Bearer ${token}`,
},
});
} catch (error) {
console.log(error);
}
};
您的post request的第二个参数应该是body
,第三个参数应该是headers
。此外,您还没有添加文档中提到的所有头文件。
headers: {
Accept: 'application/json',
Authorization: 'Bearer ' + newAccessToken,
'Content-Type': 'application/json',
}
从这里获取您的访问令牌:https://developer.spotify.com/console/post-queue/
如果它仍然不起作用,试试他们的文档中提到的curl方法,如果它起作用,切换到axios
我有和你完全相同的问题,我意识到的是我正在传递标题作为数据而不是配置。下面的代码应该为你工作,因为它为我工作。
const add = async () => {
try {
const url = `https://api.spotify.com/v1/me/player/queue?uri=${songUrl}&device_id=${deviceId}`
await axios.post(url, null,{
headers: {
Authorization: `Bearer ${to}`
},
})
} catch (error) {
console.log(error);
}
}