Spotify API问题:使用Refresh Token获取Access Token时出错
解决Spotify认证"refresh_token must be supplied"错误
问题出在请求体的参数键名上:Spotify令牌接口要求的参数键是refresh_token,但你的代码用了对象简写语法,把变量名REFRESH_TOKEN作为键名传入,导致接口无法识别到正确的参数。
修正后的代码:
import { Buffer } from 'buffer'; import querystring from 'querystring' const CLIENT_ID = import.meta.env.VITE_APP_CLIENT_ID; const CLIENT_SECRET = import.meta.env.VITE_APP_CLIENT_SECRET; const REFRESH_TOKEN = import.meta.env.VITE_APP_REFRESH_TOKEN; const basic = Buffer.from(`${CLIENT_ID}:${CLIENT_SECRET}`).toString('base64'); const TOKEN_ENDPOINT = `https://accounts.spotify.com/api/token` const getAccessToken = async () => { const response = await fetch(TOKEN_ENDPOINT, { method: 'POST', headers: { Authorization: `Basic ${basic}`, 'Content-Type': 'application/x-www-form-urlencoded', }, body: querystring.stringify({ grant_type: 'refresh_token', // 显式指定正确的参数键名 refresh_token: REFRESH_TOKEN, }), }) return response }
解释:JavaScript对象简写语法会把变量名直接作为键名,你之前的代码会生成{ REFRESH_TOKEN: "你的令牌值" }这样的结构,而Spotify接口只接受键名为refresh_token的参数,所以必须显式声明键名并赋值。
内容的提问来源于stack exchange,提问作者Phillip Che
相关产品推荐
相关产品推荐

