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?