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 获取当前播放/最近播放的歌曲

无法使用 kaaes Spotify web api 获取播放列表的曲目

如何在没有身份验证的情况下获取 Spotify 音乐列表

Spotify API 访问和刷新令牌

Spotify API 播放器更新事件

当前播放状态的 Spotify Web SDK / Web API 问题