PHP code example of macsidigital / laravel-oauth2-client
1. Go to this page and download the library: Download macsidigital/laravel-oauth2-client library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
macsidigital / laravel-oauth2-client example snippets bash
php artisan vendor:publish --provider="MacsiDigital\OAuth2\Providers\OAuth2ServiceProvider" --tag="integration-config"
bash
php artisan vendor:publish --provider="MacsiDigital\OAuth2\Providers\OAuth2ServiceProvider" --tag="integration-migrations"
bash
php artisan migrate
php
return [
'oauth2' => [
'clientId' => '',
'clientSecret' => '',
],
'options' => [
'scope' => ['openid email profile offline_access accounting.settings accounting.transactions accounting.contacts accounting.journals.read accounting.reports.read accounting.attachments']
],
'tokenProcessor' => '\MacsiDigital\OAuth2\Support\AuthorisationProcessor',
'tokenModel' => '\MacsiDigital\OAuth2\Support\Token\File',
'authorisedRedirect' => '',
'failedRedirect' => '',
];
php
$this->mergeConfigFrom(__DIR__.'/../../config/config.php', 'xero');
php
route('oauth2.authorise', ['integration' => 'xero']); // will return /oauth2/xero/authorise
php
namespace MacsiDigital\Xero\Support;
use MacsiDigital\Xero\Facades\Identity;
use MacsiDigital\Xero\Identity\Connection;
use MacsiDigital\Xero\Exceptions\CantRetreiveTenantException;
class AuthorisationProcessor
{
public function __construct($accessToken, $integration)
{
$config = config($integration);
$token = $config['tokenModel'];
$token = (new $token($integration))->set([
'accessToken' => $accessToken->getToken(),
'refreshToken' => $accessToken->getRefreshToken(),
'expires' => $accessToken->getExpires(),
'idToken' => $accessToken->getValues()['id_token']
])->save();
$connection = Identity::connection()->raw()->get();
if($connection != []){
$tenantId = $connection->json()[0]['tenantId'];
$token->set(['tenantId' => $tenantId])->save();
return $token;
} else{
throw new CantRetreiveTenantException;
}
}
}
php
namespace MacsiDigital\Xero\Support;
use MacsiDigital\Xero\Facades\Client;
use MacsiDigital\API\Support\Entry as ApiEntry;
class Entry extends ApiEntry
{
public function newRequest()
{
$config = config('xero');
$class = $config['tokenModel'];
$token = new $class('xero');
if($token->hasExpired()){
$token = $token->renewToken();
}
return Client::baseUrl($config['baseUrl'])->withToken($token->accessToken())->withHeaders(['xero-tenant-id' => $token->tenantId()]);
}
}