kirilkirkov / spotify-webapi-sdk
Spotify WebApi PHP 库
Requires
- php: >=7.2.0
- guzzlehttp/guzzle: ~6.0
This package is auto-updated.
Last update: 2024-09-03 08:30:30 UTC
README
需要 php >= 7.2
- 集成分页
- 自动刷新令牌
- 所有 API 引用的独立服务文件
- Guzzle 请求
安装
composer require kirilkirkov/spotify-webapi-sdk
使用代码示例
https://github.com/kirilkirkov/Spotify-WebApi-PHP-SDK/wiki/Example-Usage-with-Code没有令牌?
选项 1 - 使用客户端凭据获取访问令牌
use SpotifyWebAPI\SpotifyWebApi;
try {
$spotifyWebApi = new SpotifyWebApi();
$token_obj = $spotifyWebApi->getAccessTokenWithCredentials(
'CLIENT_ID',
'CLIENT_SECRET'
);
echo $token_obj->access_token;
// echo $token_obj->token_type;
// echo $token_obj->expires_in;
} catch(\SpotifyWebAPI\SpotifyWebAPIException $e) {
echo $e->getMessage();
}
选项 2 - 使用代码授权获取访问令牌(推荐)
在发起请求之前,您必须将您的重定向 URI 添加到 https://developer.spotify.com/dashboard
获取代码重定向 URL
use SpotifyWebAPI\SpotifyWebApi;
try {
$spotifyWebApi = new SpotifyWebApi([
'clientId' => 'CLIENT_ID',
'clientSecret' => 'CLIENT_SECRET',
]);
$callBackUrl = 'http://yoursite.com/callback';
$url = $spotifyWebApi->getUrlForCodeToken($callBackUrl);
header("Location: {$url}");
} catch(\SpotifyWebAPI\SpotifyWebAPIException $e) {
echo $e->getMessage();
}
在 Spotify 注册后,您将被重定向回上述提供的回调 URL (http://yoursite.com/callback),并带有参数 $_GET['code'],该代码可以通过以下命令获取令牌
use SpotifyWebAPI\SpotifyWebApi;
try {
$spotifyWebApi = new SpotifyWebApi();
$tokens = $spotifyWebApi->getAccessTokenWithCode(
'YOUR_CODE',
'http://yoursite.com/callback'
);
} catch(\SpotifyWebAPI\SpotifyWebAPIException $e) {
echo $e->getMessage();
}
在上述示例中,您将收到包含 accessToken 和 refreshToken 的数组 $tokens。
访问/刷新令牌
Spotify 令牌有效期为 1 小时。如果您的令牌已过期并且您发起了一个调用,则 SDK 将使用提供的刷新令牌在每个查询中自动续期访问令牌(因为没有安全的地方可以自动保存它)。
如果您在请求调用之前设置了 $spotifyWebApi->returnNewTokenIfIsExpired(true);,如果访问令牌已过期,将返回查询中的新访问令牌对象,然后您可以将其保存到数据库中,并使用新的访问令牌重新发起请求。您也可以使用以下方式手动使用刷新令牌生成访问令牌
use SpotifyWebAPI\SpotifyWebApi;
try {
$spotifyWebApi = new SpotifyWebApi([
'clientId' => 'CLIENT_ID',
'clientSecret' => 'CLIENT_SECRET',
'accessToken' => $oldAccessToken,
'refreshToken' => 'REFRESH_TOKEN',
]);
$result = $spotifyWebApi->refreshAccessToken();
} catch(\SpotifyWebAPI\SpotifyWebAPIException $e) {
echo $e->getMessage();
}
并将最终过期时间戳保存为 time() + $result->expires_in。您可以在数据库中保存的过期时间结束时手动生成新的访问令牌。
建议
将您调用的 API 的 IP 地址添加到您的服务器操作系统的 hosts 文件中是一种良好的做法,因为 Guzzle 有时无法解析 DNS。
可以增加脚本执行时间 ini_set('max_execution_time', XXX); 和 set_time_limit(XXX);
函数
您可以在本存储库的 wiki 中找到此 SDK 中所有可用的函数(到目前为止已集成了 Spotify 支持的所有函数)
- https://github.com/kirilkirkov/Spotify-WebApi-PHP-SDK/wiki/Functions-and-examples
- https://github.com/kirilkirkov/Spotify-WebApi-PHP-SDK/wiki/Pagination 集成分页示例
捐赠
如果此项目帮助您减少了开发时间,您可以给我一杯咖啡以继续其开发。谢谢! :)