Skip to content

Genesys OAuth 2.0 support for the PHP League's OAuth 2.0 Client

License

Notifications You must be signed in to change notification settings

vormkracht10/oauth2-genesys

Repository files navigation

Genesys Provider for OAauth 2.0 Client

GitHub release (latest by date) Tests Packagist PHP Version Support Latest Version on Packagist Total Downloads

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

Installation

You can install the package via composer:

composer require vormkracht10/oauth2-genesys

Usage

Usage is the same as The League's OAuth client, using \Vormkracht10\OAuth2Genesys\Provider\Genesys as the provider.

Defining the region

Because Genesys uses different endpoints for different regions, you need to define the region you want to use. This can be done by passing the region as parameter to the constructor. By default the region is set to us-east-1. All regions and their endpoints can be found in the Genesys API documentation here.

Authorization Code Flow

require_once('./vendor/autoload.php');
session_start();

$provider = new \Vormkracht10\OAuth2Genesys\Provider\Genesys([
    'region'            => 'us-west-2',
    'clientId'          => '{genesys-client-id}',
    'clientSecret'      => '{genesys-client-secret}',
    'redirectUri'       => 'https://example.com/callback-url',
]);

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

    // If we don't have an authorization code then get one
    $authUrl = $provider->getAuthorizationUrl();
    $_SESSION['oauth2state'] = $provider->getState();
    header('Location: '.$authUrl);
    exit;

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

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

} else {

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

    // Optional: Now you have a token you can look up a users profile data
    try {

        // We got an access token, let's now get the user's details
        $user = $provider->getResourceOwner($token);

    } catch (Exception $e) {

        // Failed to get user details
        exit('Oh dear...');
    }

    // Use this to interact with an API on the users behalf
    echo $token->getToken();
}

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

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