webfox / laravel-xero-oauth2

A Laravel integration for Xero using the Oauth 2.0 spec
MIT License
50 stars 32 forks source link

Long Xero Sessions #4

Closed discoveryjames closed 4 years ago

discoveryjames commented 4 years ago

Hi,

I've noticed when running console jobs which run for over 30 minutes - the token expires so all activity halts until the console job is ran again.

Is there a safe way to manually get a new token?

hailwood commented 4 years ago

Ah yes that makes sense,

The tokens from Xero only live for 30 minutes before they must be renewed and we only check if they're expired when the credential manager is first resolved since the standard usecase is web requests that last only a few seconds.

The configuration object for Xero is a singleton (not using Laravel's DI container),

So you should be able to do the following regularly in your job to refresh the token. I would suggest doing it no more than every 15 minutes though.

$credentials = $app->make(OauthCredentialManager::class);
$config = Configuration::getDefaultConfiguration();

$credentials->refresh();
$config->setAccessToken($credentials->getAccessToken());