【问题标题】:Spotify WebApi Can't Fetch User Playlists DataSpotify WebApi 无法获取用户播放列表数据
【发布时间】: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

【问题讨论】:

    标签: javascript reactjs spotify spotify-app


    【解决方案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));
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-23
        • 2014-10-28
        • 2011-09-23
        • 2015-08-31
        • 2019-07-24
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        相关资源
        最近更新 更多