From ae124c9c1ae237aa815b1a892808fc35def26d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Tue, 21 Sep 2021 16:04:10 +0200 Subject: [PATCH] Add "logout" button --- public/index.php | 44 ++++++++++++++++++++++++++++++++++++++++++-- template.php | 3 +++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/public/index.php b/public/index.php index 2dd515c..923f16c 100644 --- a/public/index.php +++ b/public/index.php @@ -4,17 +4,57 @@ session_start(); require '../vendor/autoload.php'; require '../config.php'; +if (isset($_GET['logout'])) { + $_SESSION['accessToken'] = ''; + $_SESSION['refreshToken'] = ''; +} + $accessToken = ''; if (isset($_SESSION['accessToken'])) { $accessToken = $_SESSION['accessToken']; } +$refreshToken = ''; +if (isset($_SESSION['refreshToken'])) { + $refreshToken = $_SESSION['refreshToken']; +} + if (!$accessToken) { header('Location: auth.php'); die(); } -$api = new SpotifyWebAPI\SpotifyWebAPI(); -$api->setAccessToken($accessToken); +$session = new SpotifyWebAPI\Session( + $CLIENT_ID, + $CLIENT_SECRET +); + +// Use previously requested tokens fetched from session +if ($accessToken) { + $session->setAccessToken($accessToken); + $session->setRefreshToken($refreshToken); +} else { + // Or request a new access token + $session->refreshAccessToken($refreshToken); +} + +$scopes = $session->getScope(); + +$options = [ + 'scope' => [ + 'playlist-read-private', + 'playlist-modify-private', + 'user-read-private', + ], +'auto_refresh' => true, +]; + +$api = new SpotifyWebAPI\SpotifyWebAPI($options, $session); + +// Save new tokens, they might have been updated +$_SESSION['accessToken'] = $session->getAccessToken(); +$_SESSION['refreshToken'] = $session->getRefreshToken(); + +// ################################################################ $user = $api->me(); diff --git a/template.php b/template.php index dbc0190..cd5e753 100644 --- a/template.php +++ b/template.php @@ -21,6 +21,9 @@ <h5 class="card-title"><?php echo $templateData['user']->display_name; ?></h5> <a href="<?php echo $templateData['user']->external_urls->spotify; ?>" class="btn btn-primary">View profile</a> </div> + <div class="card-footer"> + <a href="?logout" class="card-link">disconnect</a> + </div> </div> </div> -- GitLab