Spotify API PHP-无法请求数据和获取访问令牌

时间:2018-11-05 15:21:20

标签: php laravel api spotify

我目前不熟悉使用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')
);

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

当然可以!

  

还要如何保存访问令牌?

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

许多访问令牌仅在特定持续时间内可用。 Spotify博士应该谈论它。

  

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

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

请勿在文件laravel中复制require 'vendor/autoload.php';,已经自动处理了作曲家。