-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcallback-spotify.php
More file actions
71 lines (61 loc) · 2.52 KB
/
Copy pathcallback-spotify.php
File metadata and controls
71 lines (61 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
declare(strict_types=1);
/*
* Copyright (c) 2022 Sander Dorigo
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
require 'init.php';
if (array_key_exists('code', $_GET)) {
$code = $_GET['code'];
// do request at Spotify.
$client = new Client;
$opts = [
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
],
'auth' => [$_ENV['SPOTIFY_CLIENT_ID'], $_ENV['SPOTIFY_CLIENT_SECRET']],
'form_params' => [
'grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => $_ENV['SPOTIFY_REDIRECT'],
],
];
try {
$res = $client->request('POST', 'https://accounts.spotify.com/api/token', $opts);
} catch (ClientException $e) {
echo ':(';
var_dump($e->getRequest());
var_dump((string)$e->getResponse()->getBody());
exit;
}
$body = (string)$res->getBody();
$json = json_decode($body, true);
$json['expire_time'] = time() + $json['expires_in'];
$file = sprintf('%s/spotify-auth.json', CACHE);
file_put_contents($file, json_encode($json, JSON_PRETTY_PRINT));
echo 'The Spotify access token is saved in the cache file!';
echo '<br>';
echo 'If necessary, put this file in <code>cache/spotify-auth.json</code>:';
echo '<br><br>';
echo '<pre>' . json_encode($json, JSON_PRETTY_PRINT) . '</pre>';
exit;
}