Javascript Spotify API错误401-试图将跟踪放入用户';s图书馆

Javascript Spotify API错误401-试图将跟踪放入用户';s图书馆,javascript,node.js,axios,spotify,http-status-code-401,Javascript,Node.js,Axios,Spotify,Http Status Code 401,只是想知道是否有人能发现这段代码中会抛出401未经授权错误的问题 我有几个类似的函数,都工作得很好,是为了通过SpotifyWebAPI(使用axios)获取数据而编写的,但出于某种原因,我的PUT请求抛出了一个错误 下面是此端点的示例 基本上,数据以JSON对象数组的形式从客户端发送到服务器,其中包含我希望保存到授权Spotify帐户的曲目的详细信息,以及作为参数的有效访问令牌。我知道令牌是有效的,因为我在这一步之前通过另一个GET获取用户的帐户数据。我知道url被正确连接,因为它被打印在错误

只是想知道是否有人能发现这段代码中会抛出401未经授权错误的问题

我有几个类似的函数,都工作得很好,是为了通过SpotifyWebAPI(使用axios)获取数据而编写的,但出于某种原因,我的PUT请求抛出了一个错误

下面是此端点的示例

基本上,数据以JSON对象数组的形式从客户端发送到服务器,其中包含我希望保存到授权Spotify帐户的曲目的详细信息,以及作为参数的有效访问令牌。我知道令牌是有效的,因为我在这一步之前通过另一个GET获取用户的帐户数据。我知道url被正确连接,因为它被打印在错误详细信息中:

非常感谢您的帮助

app.put("/migration-data/put/:token", async (req, res) => {
    console.log(`Migrating data to new account using token ${req.params.token.substring(0, 4)}...\n`);
    const toClientPutData = await putData(req.params.token, req.body);
    res.json(toClientPutData);
});

const putData = async (token, data) => {
    const putResults = {};

    const spotifyAPI_PutTracks = async (trackData, index=0) => {
        try {           
            const recurse = ((trackData.length - 1) - (index + 50)) > 0;

            const offset = recurse ? 49 : (trackData.length - index) - 1;
            var tracksThisQuery = "";

            for (var i = index; i < (index + offset); i++) {
                tracksThisQuery+=`${trackData[i].id}%2C`
            }

            tracksThisQuery+=`${trackData[(index + offset)].id}`

            const puttingTracks = await axios.put(
                `https://api.spotify.com/v1/me/tracks?ids=${tracksThisQuery}`,
                { headers: { Authorization: `Bearer ${token}` } }
            );

            if (recurse) {
                return spotifyAPI_PutTracks(trackData, index+=50);
            }

            return puttingTracks.data;

        } catch (apiError) {
            console.log(apiError);
        }
    }

    const { user, savedTracks, savedAlbums, following, playlists } = data;

    if (token) {
        // put tracks
        const putTracksData = await spotifyAPI_PutTracks(savedTracks);
        putResults["putTracks"] = putTracksData;
    }

    return putResults;
}
app.put(“/migration data/put/:token”),异步(req,res)=>{
log(`使用令牌${req.params.token.substring(0,4)}将数据迁移到新帐户…\n`);
const toClientPutData=等待putData(req.params.token,req.body);
res.json(toClientPutData);
});
const putData=async(令牌,数据)=>{
常量putResults={};
const spotifyAPI_PutTracks=async(trackData,index=0)=>{
试试{
const recurse=((trackData.length-1)-(index+50))>0;
const offset=recurse?49:(trackData.length-index)-1;
var tracksThisQuery=“”;
对于(var i=指数;i<(指数+偏移量);i++){
tracksThisQuery+=`${trackData[i].id}%2C`
}
tracksThisQuery+=`${trackData[(索引+偏移量)].id}`
const puttingtrack=等待axios.put(
`https://api.spotify.com/v1/me/tracks?ids=${tracksThisQuery}`,
{头:{授权:`Bearer${token}`}
);
if(递归){
返回spotifyAPI_PutTracks(trackData,索引+=50);
}
返回puttingTracks.data;
}捕获(错误){
console.log(apiError);
}
}
const{user,savedTracks,savedAlbums,following,playlists}=data;
如果(令牌){
//追踪
const putTracksData=等待spotifyAPI_PutTracks(保存的目录);
putResults[“putTracks”]=putTracksData;
}
返回结果;
}

解决了这个问题-PUT希望在url之后,但在标题之前有一个额外的数据参数。我刚刚在第二个参数槽中插入了一个空的对象文字,我们开始比赛了