You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Spotify Web API获取当前播放曲目时遭遇401错误(Permissions missing)的技术求助

解决Spotify Web API获取当前播放曲目时的401 Permissions Missing错误

我一眼就看到你代码里的关键问题——授权URL的scope参数格式写错了,这直接导致你请求的权限根本没被正确传递给Spotify的认证服务。

核心问题分析

你构建授权URL的代码里,scope参数部分多了一个多余的&:

window.location.href = `${apiUrl}?client_id=${clientId}&redirect_uri=${redirectUrl}&scope=&${scope.join( " " )}&response_type=token&show_dialog=true`

这里的&scope=&${scope.join(...)}会让scope的实际值为空字符串,后面的权限列表变成了URL里的无效独立参数(比如user-read-email会被当作无值参数)。Spotify的认证服务根本没收到你请求的user-read-currently-playing权限,所以调用对应API时自然返回401权限缺失错误。

修正后的授权URL代码

把多余的&去掉,同时建议用%20显式编码空格作为scope的分隔符(避免浏览器自动编码可能出现的问题):

window.location.href = `${apiUrl}?client_id=${clientId}&redirect_uri=${redirectUrl}&scope=${scope.join( "%20" )}&response_type=token&show_dialog=true`

后续验证步骤

  1. 重新授权检查权限:修改代码后,重新走一遍用户授权流程,确认授权界面上显示了Read your currently playing track这个权限(Spotify的授权界面样式会不定期更新,只要权限列表包含该选项就没问题)。
  2. 解析Token确认权限:拿到新的access token后,用jwt.io解析它,检查payload里的scope字段是否包含user-read-currently-playing。
  3. 重新测试API调用:用新获取的token调用/v1/me/player/currently-playing接口,应该就能正常返回数据了。

补充说明

你提到其他API(比如获取播放列表、用户信息)能正常调用,是因为这些接口需要的user-read-private、user-read-email等权限,可能在旧token或其他流程中已经正确获取,但user-read-currently-playing这个权限一直没被正确请求,所以只有这个接口报错。

内容的提问来源于stack exchange,提问作者Michael Oviedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:27:47