Spotify API php - 无法请求数据并获取访问令牌

Posted

技术标签:

【中文标题】Spotify API php - 无法请求数据并获取访问令牌【英文标题】:Spotify API php - unable to request data and get access token 【发布时间】:2019-04-08 23:30:40 【问题描述】:

我目前是使用 php 和 Laravel 以及使用 API 的新手,但是我一直在关注 Spotify PHP 教程 https://github.com/jwilsson/spotify-web-api-php。

我还把我想问的一些问题用粗体表示,希望有人能提供帮助。

我已按照所有步骤操作,但需要帮助才能使其正常工作。

将以下代码放在它自己的文件中,我们称之为 auth.php。将 CLIENT_ID 和 CLIENT_SECRET 替换为 Spotify 提供给您的值。

(我应该把这个文件保存在哪里?)

REDIRECT_URI 是您在创建 Spotify 应用时输入的,请确保它完全匹配。

(我使用了我的 localhost:8888/callback/ 不确定这是否正确?)显然,出于安全原因,我没有在本网站上提供详细信息。

<?php
require 'vendor/autoload.php';

$session = new SpotifyWebAPI\Session(
    'CLIENT_ ID',
    'CLIENT_SECRET',
    'REDIRECT_URL'
);

$options = [
    'scope' => [
        'playlist-read-private',
        'user-read-private',
    ],
];

header('Location: ' . $session->getAuthorizeUrl($options));
die();



?>

当用户批准您的应用后,Spotify 会将用户连同代码一起重定向到指定的重定向 URI。您需要使用此代码从 Spotify 请求访问令牌。

将此代码放入名为 callback.php 的新文件中:

是否用我的详细信息替换客户 ID 和密码?还有如何保存访问令牌?

require 'vendor/autoload.php';

$session = new SpotifyWebAPI\Session(
    'CLIENT_ID',
    'CLIENT_SECRET',
    'REDIRECT_URI'
);

// Request a access token using the code from Spotify
$session->requestAccessToken($_GET['code']);

$accessToken = $session->getAccessToken();
$refreshToken = $session->getRefreshToken();

// Store the access and refresh tokens somewhere. In a database for example.

// Send the user along and fetch some data!
header('Location: app.php');
die();

在第三个文件 app.php 中,告诉 API 包装器使用哪个访问令牌,然后进行一些 API 调用!

(我还应该在哪里保存这个文件以及如何在我的 Laravel 控制器中进行这些调用?)

require 'vendor/autoload.php';

$api = new SpotifyWebAPI\SpotifyWebAPI();

// Fetch the saved access token from somewhere. A database for example.
$api->setAccessToken($accessToken);

// It's now possible to request data about the currently authenticated user
print_r(
    $api->me()
);

// Getting Spotify catalog data is of course also possible
print_r(
    $api->getTrack('7EjyzZcbLxW7PaaLua9Ksb')
);

【问题讨论】:

【参考方案1】:

(我应该把这个文件保存在哪里?)

您可以将此文件保存在 laravel 中的不同位置,以进行测试,您可以将其写入控制器(不是最好的,但您可以)。

用我的详细信息替换客户 ID 和密码吗?

当然可以!

还有如何保存访问令牌?

您可以保存在数据库或会话中或您想要的位置。如果您将其存储在会话中,则如果用户退出您的应用程序,则必须发出新请求以获取新的访问令牌。在数据库中,您可以重用它。

许多访问令牌仅在特定期限内可用。 spotify 文档应该说明它。

(我还应该在哪里保存这个文件以及如何在我的 Laravel 控制器中进行这些调用?)

对于测试,您可以在控制器中执行此操作,但最好有一个服务层,您可以在其中放置应用程序的业务逻辑。

不要在你的文件中复制require 'vendor/autoload.php'; laravel 已经处理作曲家自动加载。

【讨论】:

您如何拨打电话?例如搜索艺术家?感谢回复 这里是文档:github.com/jwilsson/spotify-web-api-php/blob/master/docs/… 你会在这里找到你需要的!

以上是关于Spotify API php - 无法请求数据并获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

Spotify API:使用 PHP 请求

无法再访问基本的 Spotify API 数据

无法从 Spotify API 获取访问令牌

无法使用 SwiftUI 中的组合框架从 Spotify API 获取数据

cURL 请求 Spotify API 意外状态:415

带有更多艺术家详细信息的 Spotify API 跟踪请求