Spotify WebApi 无法获取用户播放列表数据
Posted
技术标签:
【中文标题】Spotify WebApi 无法获取用户播放列表数据【英文标题】:Spotify WebApi Can't Fetch User Playlists Data 【发布时间】:2021-08-16 15:21:50 【问题描述】:我正在使用 react.js 制作一个 spotify 克隆,并使用 spotify API 在其中添加一些功能
我使用spotify-web-api-js
包来处理用户身份验证和其他功能。
但我无法获取显示在侧边栏上的用户播放列表数据,我遵循了文档here,我使用的方法对我来说似乎是正确的,
文档中给出的代码 sn-p
// Get a user's playlists
spotifyApi.getUserPlaylists('thelinmichael')
.then(function(data)
console.log('Retrieved playlists', data.body);
,function(err)
console.log('Something went wrong!', err);
);
当我在控制台记录结果时,我得到了一些数据,但它不包含用户的播放列表
用于获取播放列表的代码 sn-p,在此代码中用户可以完美获取
// IMPORT AND VARIABLES
import SpotifyWebApi from "spotify-web-api-js";
const spotify = new SpotifyWebApi();
// SETTING USER
spotify.setAccessToken(_token);
spotify.getMe().then((user) =>
dispatch(
type: "SET_USER",
user: user,
);
);
spotify
.getUserPlaylists()
.then((playlists) =>
console.log("get playlists", playlists);
dispatch(
type: "SET_PLAYLISTS",
playlists: playlists.body,
);
)
.catch((err) => console.log("playlist err", err));
播放列表结果的控制台日志,它没有文档中显示的任何正文,我们需要使用结果的.body
href: "https://api.spotify.com/v1/users/ut4muuidtha4hcgtknh2diiqu/playlists?offset=0&limit=20",
items: Array(0),
limit: 20,
next: null,
offset: 0,
…
在我使用过这些的范围内,
const scopes = [
"playlist-read-private",
"user-read-currently-playing",
"user-read-recently-played",
"user-read-playback-state",
"user-top-read",
"user-modify-playback-state",
];
我也通过代码here上传,如果你可以从那里检查,部署here
【问题讨论】:
【参考方案1】:在你提到的文档中,getUserPlaylist() 函数中有一些参数,但你没有提供任何参数,重新检查那个东西
【讨论】:
【参考方案2】:您的问题是,您忘记传递示例中的thelinmichael
之类的用户ID (spotifyApi.getUserPlaylists('thelinmichael')
)。在您的情况下,没有参数。因此,我假设 API 将使用您自己的用户 ID。从Spotify Developer Console 可以看出,没有与此用户 ID 关联的播放列表。如果您将所需的用户 ID 作为参数传递,您的查询应该可以工作。
// IMPORT AND VARIABLES
import SpotifyWebApi from "spotify-web-api-js";
const spotify = new SpotifyWebApi();
// SETTING USER
spotify.setAccessToken(_token);
spotify.getMe().then((user) =>
dispatch(
type: "SET_USER",
user: user,
);
);
// USER ID TO QUERY PLAYLISTS FROM
const userId = "XXXXXXX";
spotify
.getUserPlaylists(userId)
.then((playlists) =>
console.log("get playlists", playlists);
dispatch(
type: "SET_PLAYLISTS",
playlists: playlists.body,
);
)
.catch((err) => console.log("playlist err", err));
【讨论】:
以上是关于Spotify WebApi 无法获取用户播放列表数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spotify Web API 获取当前播放/最近播放的歌曲