This package provides BookingSync OAuth 2.0 support for the PHP League's OAuth 2.0 Client.
This lib use old deprecated vendors. You may have an SSL certificate issue. To solve it, you should:
- Replace the cacert.pem file in the deprecated GuzzleHttp repo with an updated one from https://curl.haxx.se/docs/caextract.html
- The location of the old pem file is
vendor/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem
To install, use composer:
composer require bookingsync/oauth2-bookingsync-php
Usage is the same as The League's OAuth client, using \Bookingsync\OAuth2\Client\Provider\Bookingsync
as the provider.
$provider = new Bookingsync\OAuth2\Client\Provider\Bookingsync([
'clientId' => 'XXXXXXXX',
'clientSecret' => 'XXXXXXXX',
'redirectUri' => 'https://www.example.com/callback-url', // https is mandatory for BookingSync
'scopes' => ['public'] // scopes required by your BookingSync application.
]);
if (!isset($_GET['code'])) {
// If we don't have an authorization code then get one
$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->state;
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
$userDetails = $provider->getUserDetails($token);
// Use these details to create a new profile
printf('Hello %s!', $userDetails->screenName);
} catch (Exception $e) {
// Failed to get user details
exit('Oh dear...');
}
// Use this to interact with an API on the users behalf
echo $token->accessToken;
// Use this to get a new access token if the old one expires
echo $token->refreshToken;
// Unix timestamp of when the token will expire, and need refreshing
echo $token->expires;
}
$provider = new Bookingsync\OAuth2\Client\Provider\Bookingsync([
'clientId' => '{bookingsync-client-id}',
'clientSecret' => '{bookingsync-client-secret}',
'redirectUri' => 'https://example.com/callback-url'
]);
$grant = new \League\OAuth2\Client\Grant\RefreshToken();
$token = $provider->getAccessToken($grant, ['refresh_token' => $token->refreshToken]);
phpunit test
The MIT License (MIT). Please see License File for more information.