Spotify Web API - 客户端凭据 - 访问用户播放列表

Posted

技术标签:

【中文标题】Spotify Web API - 客户端凭据 - 访问用户播放列表【英文标题】:Spotify Web API - Client Credentials - Accessing a users playlists 【发布时间】:2015-08-28 21:43:33 【问题描述】:

我正在尝试使用客户端凭据流访问用户播放列表曲目。

Spotify 获取播放列表文档:https://developer.spotify.com/web-api/get-playlists-tracks/

Spotify 获取客户端凭据文档:https://developer.spotify.com/web-api/authorization-guide/

第一个问题,是否可以使用客户端凭据流获取用户播放列表曲目?我正在使用此流程,因为我无法弹出登录框供用户登录。

其次,我尝试使用https://github.com/jwilsson/spotify-web-api-php 客户端凭据流(文档:http://jwilsson.github.io/spotify-web-api-php/authorization.html),实际上是复制该页面底部的代码:

    <?php

include('vendor/autoload.php');

$session = new SpotifyWebAPI\Session('Tobys client id', 'Tobys secret', 'http://localhost/callback');
// Request a access token with optional scopes
$scopes = array(
    'playlist-read-private',
    'user-read-private'
);

$session->requestCredentialsToken($scopes);
$accessToken = $session->getAccessToken(); // We're good to go!

// Set the code on the API wrapper
$api->setAccessToken($accessToken);

$playlists = $api->getUserPlaylists('USER_ID', array(
    'limit' => 5
));

foreach ($playlists->items as $playlist) 
    echo '<a href="' . $playlist->external_urls->spotify . '">' . $playlist->name . '</a> <br>';

这给了我Notice: Undefined variable: api in /var/www/html/dev/testing.php on line 16

我也尝试使用 $api = new SpotifyWebAPI\SpotifyWebAPI(); 创建 API 变量,但这表示我需要用户信息/令牌。

谢谢。

【问题讨论】:

对于 $api,请尝试引用此 github.com/jwilsson/spotify-web-api-php/blob/master/tests/… 【参考方案1】:

第一个问题,是否可以使用 客户端凭据流?

是的,为播放列表检索曲目不需要将用户身份验证作为访问令牌的一部分。

我也尝试使用 $api = new 创建 API 变量 SpotifyWebAPI\SpotifyWebAPI();但这表示我需要用户信息/ 令牌。

查看代码(Session class,SpotifyWebapi class),看起来您应该这样做

$api = new SpotifyWebAPI\SpotifyWebAPI();
$session = new SpotifyWebAPI\Session($clientId, $clientSecret, $redirectUri);
$api->setAccessToken($session->getAccessToken());

设置完成后,您应该可以像在示例代码中那样使用getUserPlaylists 方法。

【讨论】:

感谢您的帮助。可以确认这行得通。当我将上面代码中的 USER_ID 更改为我的用户名时,它可以完美运行。但是,当我将其更改为我知道有播放列表的其他人的用户名时,播放列表不会显示...播放列表是否只为拥有客户端 ID 的人抓取?如果是这样,我怎样才能获得其他用户的播放列表?再次感谢您的帮助。 使用通过客户端凭据流接收的访问令牌只会返回 USER_ID 的公共播放列表 - 我猜您提供的 USER_ID 只有私人播放列表。检索私有播放列表的唯一方法是使用经过用户身份验证的访问令牌,并让用户授权 playlist-read-private 范围。

以上是关于Spotify Web API - 客户端凭据 - 访问用户播放列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用客户端ID和密码访问spotify的web api?

我正在使用 php 通过 PHP 和客户端凭据流连接到 spotify 的 API

如何使用 Express 构建“客户端凭据流”以授权使用 Spotify API?

无法通过具有客户端凭据流的 CloudFlare Worker 对 Spotify API 进行 OAuth

Spotify API 发布调用 – 响应 415?

通过 Web API 在 Spotify 播放器上排队歌曲