Spotify API php - невозможно запросить данные и получить токен доступа - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время я новичок в использовании 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:

Заменить идентификатор клиента и секрет на мои данные? также как сохранить токен доступа?

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 голосов
/ 05 ноября 2018

(Где мне сохранить этот файл?)

Вы можете сохранить этот файл в разных местах в laravel, для тестирования вы можете записать его в контроллер (не самый лучший, но вы можете).

Заменить идентификатор клиента и секрет на мои данные?

Да, конечно!

также, как мне сохранить токен доступа?

Вы можете сохранить в базе данных или в сеансе или где вы хотите. Если вы храните его в сеансе, вам нужно будет сделать новый запрос, чтобы получить новый токен доступа, если пользователь вышел из вашего приложения. В базе данных вы можете использовать его повторно.

Многие токены доступа доступны только в течение определенного периода времени. Об этом следует поговорить в подделке.

(Где я могу также сохранить этот файл и как мне выполнять эти вызовы в контроллерах Laravel?)

Для тестирования вы можете сделать это на своем контроллере, но неплохо иметь сервисный уровень, на котором вы размещаете бизнес-логику своего приложения.

Не копируйте require 'vendor/autoload.php'; в ваш файл laravel handle автозагрузки композитора уже.

...