首页 > 解决方案 > Spotify API 令牌请求 - 400 `SyntaxError: Unexpected End of Input`

问题描述

我正在开发一个Next.js需要与 Spotify API 连接的网络应用程序。我成功获得了authorization_code,但我在api/token端点上收到 400 错误。

我已经尝试在 fetch 调用中替换bodyparamsand 。data我还尝试在将 JSONconst传递给 fetch 之前将其解析为 a 。

try {
    const res = await fetch('https://accounts.spotify.com/api/token', {
        method: 'POST',
        mode: 'no-cors',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            Authorization: `Basic ${process.env.SPOTIFY_CREDS_BASE_SIXTYFOUR}`,
        },
        body: JSON.stringify({
            grant_type: 'authorization_code',
            code: authCode,
            redirect_uri: process.env.SPOTIFY_REDIRECT_URI,
            client_id: process.env.SPOTIFY_CLIENT_ID,
            client_secret: process.env.SPOTIFY_CLIENT_SECRET,
        }),
    });
    const data = await res.json();

    dispatch({ type: GET_NEW_ACCESS_TOKEN_SUCCESS });
} catch (error) {
    console.error('getNewTokens() ERROR', error);
    dispatch({ type: GET_NEW_ACCESS_TOKEN_FAILURE });
}

我希望收到访问令牌,但我看到的是:

VM538:1 POST https://accounts.spotify.com/api/token 400 (Bad Request)

getNewTokens() ERROR SyntaxError: Unexpected end of input
    at _callee$ (AuthActions.js:37)
    at tryCatch (runtime.js:45)
    at Generator.invoke [as _invoke] (runtime.js:271)
    at Generator.prototype.<computed> [as next] (runtime.js:97)
    at asyncGeneratorStep (asyncToGenerator.js:5)
    at _next (asyncToGenerator.js:27)

标签: reactjsfetchspotifynext.js

解决方案


您可以尝试更新您的标题,如下所示,因为您在您的身体上传递 JSON

headers: {
        'Accept': 'application/x-www-form-urlencoded; application/json', 
         Authorization: `Basic ${process.env.SPOTIFY_CREDS_BASE_SIXTYFOUR}`,
    }

更新了您的标头以接受 JSON 格式

我试图更新您的请求并进一步更新此标头能够按预期发布我的正文。由于我没有凭据,我收到 500,但我的请求已到达服务器。

在此处输入图像描述


推荐阅读