Skip to content

kangaroorewards/oauth2-kangaroo-rewards

Repository files navigation

Kangaroo Rewards Provider for OAuth 2.0 Client

Build Status Latest Version Software License

This package provides Kangaroo Rewards OAuth 2.0 support for the PHP League's OAuth 2.0 Client.

This package is compliant with PSR-1, PSR-2, PSR-4, and PSR-7. If you notice compliance oversights, please send a patch via pull request.

Requirements

The following versions of PHP are supported.

  • PHP 5.6
  • PHP 7.1
  • PHP 7.2
  • PHP 7.3
  • PHP 7.4
  • PHP 8.0

Installation

Add the following to your composer.json file.

{
    "require": {
        "kangaroorewards/oauth2-kangaroo-rewards": "~2.0"
    }
}

Usage

Authorization Code Flow

session_start();

$provider = new KangarooRewards\OAuth2\Client\Provider\Kangaroo([
    'clientId' => CLIENT_ID,
    'clientSecret' => CLIENT_SECRET,
    'redirectUri' => REDIRECT_URI,
]);

if (!isset($_GET['code'])) {

    // If we don't have an authorization code then get one
    $authUrl = $provider->getAuthorizationUrl([]);
    $_SESSION['oauth2state'] = $provider->getState();
    
    echo '<a href="'.$authUrl.'">Log in with Kangaroo Rewards!</a>';
    exit;

// Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {

    unset($_SESSION['oauth2state']);
    echo 'Invalid state.';
    exit;

}

// Try to get an access token (using the authorization code grant)
$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

try {

    // We got an access token, let's make some requests
    $resourceOwner = $kangaroo->getResourceOwner($token);
    
    $http = new GuzzleHttp\Client;
    $response = $http->get('https://api.kangaroorewards.com/customers', [
        'headers' => [
            'User-Agent' => '{Client Name}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/vnd.kangaroorewards.api.v1+json;',
            'Authorization' => 'Bearer ' . $token->getToken(),
        ]
    ]);
    $r = json_decode((string) $response->getBody(), true);

    echo '<pre>';
    var_export($resourceOwner->toArray());
    var_export($r);
    echo '</pre>';

} catch (Exception $e) {
    exit($e->getMessage());
}

echo '<pre>';
// Use this to interact with the API on the client behalf
var_dump($token->getToken());

echo '</pre>';

Testing

$ ./vendor/bin/phpunit

Style checks can be run with:

./vendor/bin/phpcbf src --standard=psr12 -p
./vendor/bin/phpcs src --standard=psr12 -sp

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.