kirilkirkov/spotify-webapi-sdk

Spotify WebApi PHP 库

1.3 2022-02-27 12:52 UTC

This package is auto-updated.

Last update: 2024-09-03 08:30:30 UTC


README

Spotify PHP

需要 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();
}

在上述示例中,您将收到包含 accessTokenrefreshToken 的数组 $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 支持的所有函数)

捐赠

如果此项目帮助您减少了开发时间,您可以给我一杯咖啡以继续其开发。谢谢! :)

Donate