-
Notifications
You must be signed in to change notification settings - Fork 0
/
callback.php
64 lines (51 loc) · 1.82 KB
/
callback.php
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
<?php
require_once 'bootstrap.php';
use KangarooRewards\OAuth2\Client\Provider\Kangaroo as KangarooProvider;
use App\Config;
$kangaroo = new KangarooProvider([
'clientId' => Config::CLIENT_ID,
'clientSecret' => Config::CLIENT_SECRET,
'redirectUri' => Config::REDIRECT_URI_OAUTH,
'urlAuthorize' => Config::KANGAROO_API_BASE_URL . '/oauth/authorize',
'urlAccessToken' => Config::KANGAROO_API_BASE_URL . '/oauth/token',
'urlResourceOwnerDetails' => Config::KANGAROO_API_BASE_URL . '/me',
]);
if (isset($_GET['error'])) {
echo $_GET['error'];
$message = (isset($_GET['message'])) ? $_GET['message'] : '';
if ($message) {
echo ': ' . $message;
}
exit;
} elseif (!isset($_GET['code'])) {
// If we don't have an authorization code then get one
$authUrl = $kangaroo->getAuthorizationUrl();
$_SESSION['oauth2state'] = $kangaroo->getState();
header('Location: ' . $authUrl);exit;
// Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($_GET['state']) ||
($_GET['state'] !== $_SESSION['oauth2state'])
// ($_GET['state'] !== OAUTH_STATE_TOKEN)
) {
echo 'Invalid state.';
dd($_SESSION['oauth2state'], false);
dd($_GET);
unset($_SESSION['oauth2state']);
exit;
}
try {
// Try to get an access token (using the authorization code grant)
$token = $kangaroo->getAccessToken('authorization_code', [
'code' => $_GET['code'],
'scope' => 'admin',
]);
App\Utils::storeToken($token);
// print_r($token); die;
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $ex) {
echo $ex->getMessage();die;
} catch (\Exception $e) {
// Failed to get user details
echo $e->getMessage();die;
}
header('Location: ' . Config::REDIRECT_URI_MAIN);
die('Redirecting...');