我目前不熟悉使用php和Laravel并使用API,但是我一直在关注Spotify PHP教程https://github.com/jwilsson/spotify-web-api-php。
我还将一些我想问的问题加粗了,希望有人能帮忙。
我已按照所有步骤操作,但需要帮助才能使其正常工作。
将以下代码放在自己的文件中,将其称为auth.php。用Spotify给您提供的值替换CLIENT_ID和CLIENT_SECRET。
(我应该在哪里保存该文件?)
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')
);
答案 0 :(得分:1)
(我应该在哪里保存该文件?)
您可以将此文件保存在laravel中的不同位置,以进行测试,可以将其写入控制器中(不是最好的,但是可以)。
用我的详细信息替换客户ID和机密吗?
当然可以!
还要如何保存访问令牌?
您可以保存在数据库中或会话中或所需的位置。如果您将其存储在会话中,则在用户退出应用程序时,您将必须发出新请求以获取新的Access令牌。在数据库中,您可以重复使用它。
许多访问令牌仅在特定持续时间内可用。 Spotify博士应该谈论它。
(我还将在哪里保存该文件,以及如何在Laravel控制器中进行这些调用?)
对于测试,您可以在控制器中执行此操作,但是最好在服务层中放置应用程序的业务逻辑。
请勿在文件laravel中复制require 'vendor/autoload.php';
,已经自动处理了作曲家。