This repository contains Freee provider for Laravel Socialite.
$ composer require setemares/freee-socialite
- You will need to extend Socialite in order to add Freee provider, go to AppServiceProvider.php and add:
use SeteMares\Freee\Provider as FreeeProvider;
- To the
boot()
method add:
$this->bootFreeeSocialite();
- And create this method:
private function bootFreeeSocialite()
{
$socialite = $this->app->make('Laravel\Socialite\Contracts\Factory');
$socialite->extend('freee', function ($app) use ($socialite) {
$config = $app['config']['services.freee'];
return $socialite->buildProvider(FreeeProvider::class, $config);
});
}
- Add to
config/services.php
:
'freee' => [
'client_id' => env('FREEE_CLIENT_ID', ''),
'client_secret' => env('FREEE_CLIENT_SECRET', ''),
'redirect' => env('FREEE_CALLBACK', 'urn:ietf:wg:oauth:2.0:oob')
]
- Add config variables to your
.env
file:
# Freee
FREEE_CLIENT_ID=Your_client_id
FREEE_CLIENT_SECRET=Your_client_secret
FREEE_CALLBACK=Your_callback_url
- To get token use as any other socialite provider, e.g.
public function oauthRedirect()
{
return Socialite::driver('freee')
->with(['access_type' => 'offline'])
->redirect();
}
public function oauthCallback()
{
try {
$user = Socialite::driver('freee')
->user();
} catch (\Exception $e) {
return $this->respondError(Lang::getFromJson("No user in oauth response"), 422);
}
// $user contains freee user `id` and `companies` array besides
// token information (`token`, `expiresIn`, `refreshToken`)
}
- To refresh token, call provided method refreshToken($refresh_token)
try {
$data = Socialite::driver('freee')->refreshToken($refreshToken);
} catch (\Exception $e) {
// GuzzleHttp\Exception\ClientException:
return $e->getMessage());
}
- Freee will reject issuing access code needed for obtaining access token if there is anything besides
urn:ietf:wg:oauth:2.0:oob
configured inredirect_uri
, havingurn:ietf:wg:oauth:2.0:oob
in it will present token on screen, requiring user to manually copy the code and paste it into your app to continue the authentication flow. - Another, more serious problem is with the ability to refresh token, when access token being issued without problem but upon it's expiration Freee api will refuse to provide new access token with
invalid_grant
error requiring user to repeat authentication flow.
The MIT License (MIT). Please see License File for more information.