Skip to content

Latest commit

 

History

History
159 lines (121 loc) · 3.86 KB

index.rst

File metadata and controls

159 lines (121 loc) · 3.86 KB

Index

Setup

require 'vendor/autoload.php';

use Onetoweb\Minox\Client;
use Onetoweb\Minox\Token;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Request;

// start session
$session = new Session();
$session->start();

// param
$clientNumber = 42;
$clientId = 'client_id';
$clientSecret = 'client_secret';

// setup client
$client = new Client($clientNumber, $clientId, $clientSecret);

// required for most but not all endpoint methods
$administrationId = 42
$client->setAdministrationId($administrationId);

// setup token update callback
$client->setTokenUpdateCallback(function(Token $token) use ($session) {

    // store token
    $session->set('token', [
        'access_token' => $token->getAccessToken(),
        'refresh_token' => $token->getRefreshToken(),
        'expires' => $token->getExpires(),
    ]);

});

/**
 * Authorization workflow
 */

// get request
$request = Request::createFromGlobals();

if ($session->get('token') !== null) {

    // load token from storage
    $storedToken = $session->get('token');

    // build token
    $token = new Token(
        $storedToken['access_token'],
        $storedToken['refresh_token'],
        $storedToken['expires']
    );

    // set token
    $client->setToken($token);

} elseif ($request->get('code')) {

    // (optional) compare states
    if ($request->get('state') !== $session->get('state')) {
        throw new \Exception('states do not match');
    }

    // request token from code
    $client->requestTokenFromCode($request->get('code'));

} else {

    // get authorization url
    $redirectUrl = 'https://www.example.com/';

    $scope = [
        'administration:read',
        'administration:write',
    ];

    // (optional) generate a state param
    $state = bin2hex(random_bytes(16));

    $session->set('state', $state);

    $authorizationUrl = $client->getAuthorizationUrl($redirectUrl, $scope, $state);

    // display authorization url
    printf('<a href="%1$s">%1$s</a>', $authorizationUrl);
}

Scopes

Back to top