Spotify API Error. 401 Permissions missing. When Attempting to Play Track(Spotify API错误。缺少401个权限。尝试播放曲目时)
问题描述
我正在尝试使用spotify-web-api-node
在我的应用程序上播放曲目
const playSong = async () => {
// Verify access token with
console.log(spotifyApi.getAccessToken())
setCurrentTrackId(track.track.id);
setIsPlaying(true);
spotifyApi
.play({
uris: [track.track.uri],
})
.then((d) => console.log("hi", d))
.catch((e) => console.log("err", e));
};
https://github.com/caseysiebel/spotify-clone/blob/main/components/Song.tsx#L19
当我发出对spotifyApi.play()
的此调用时,我将收到此错误,错误代码为401。
我在我的应用程序中设置了访问令牌和刷新令牌。我能够登录并从API获取数据,如用户、播放列表和曲目数据。但当我尝试播放曲目时,提示我未经许可。
我以为这可能与我在Spotify API中设置scopes
的方式有关,但它们在我看来是正确的。
const scopes = [
"user-read-email",
"playlist-read-private",
"playlist-read-collaborative",
"user-read-email",
"streaming",
"user-read-private",
"user-library-read",
"user-top-read",
// "user-library-modify"
"user-read-playback-state",
"user-modify-playback-state",
"user-read-currently-playing",
"user-read-recently-played",
"user-read-playback-state",
"user-follow-read",
].join(",");
https://github.com/caseysiebel/spotify-clone/blob/main/lib/spotify.ts#L5
这似乎与传入授权LOGIN_URL
的scopes
有关,但streaming
作用域确实存在,我看不出有什么问题。看起来是这样的,因为某些API请求可以工作,而其他API请求说他们没有权限。
有人看到导致此问题的原因了吗?缺少权限问题和Spotify API?
推荐答案
第23行lib/spotify.ts
需要scope: scopes,
而非scopes: scopes,
。
在这里实际使用类型检查可能会有所帮助。
https://github.com/currenthandle/spotify-clone/commit/736108de1a1a132c43810d8415584f3be198609a#diff-b030a1ce426906990f8ed48fd8be76f54558b94141f4c811e679fef6661d396dR23
这篇关于Spotify API错误。缺少401个权限。尝试播放曲目时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spotify API错误。缺少401个权限。尝试播放曲目时


- addEventListener 在 IE 11 中不起作用 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07