diff --git a/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp b/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp index 3939a81da8..926bbbcdb6 100644 --- a/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp +++ b/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp @@ -124,7 +124,10 @@ RiaCloudConnector::RiaCloudConnector( QObject* parent, &QOAuth2AuthorizationCodeFlow::expirationAtChanged, this, [&]( const QDateTime& expiration ) - { RiaLogging::debug( QString( "Access token expiration changed: %1" ).arg( expiration.toString() ) ); } ); + { + RiaLogging::debug( QString( "Access token expiration changed: %1" ).arg( expiration.toString() ) ); + exportTokenToFile(); + } ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/Tools/Cloud/RiaConnectorTools.cpp b/ApplicationLibCode/Application/Tools/Cloud/RiaConnectorTools.cpp index 064d2b37fb..f57b3f5c99 100644 --- a/ApplicationLibCode/Application/Tools/Cloud/RiaConnectorTools.cpp +++ b/ApplicationLibCode/Application/Tools/Cloud/RiaConnectorTools.cpp @@ -34,6 +34,10 @@ QString RiaConnectorTools::tokenDataAsJson( QOAuth2AuthorizationCodeFlow* authCo QJsonObject obj; obj.insert( "token", authCodeFlow->token() ); obj.insert( "refreshToken", authCodeFlow->refreshToken() ); + if ( authCodeFlow->expirationAt().isValid() ) + { + obj.insert( "expiration", authCodeFlow->expirationAt().toSecsSinceEpoch() ); + } QJsonDocument doc( obj ); return doc.toJson( QJsonDocument::Indented ); @@ -47,7 +51,16 @@ void RiaConnectorTools::initializeTokenDataFromJson( QOAuth2AuthorizationCodeFlo QJsonDocument doc = QJsonDocument::fromJson( tokenDataJson.toUtf8() ); QJsonObject obj = doc.object(); - authCodeFlow->setToken( obj["token"].toString() ); + if ( obj.contains( "expiration" ) && obj.contains( "token" ) ) + { + quint64 secondsSinceEpoch = obj["expiration"].toVariant().toULongLong(); + QDateTime expiration = QDateTime::fromSecsSinceEpoch( secondsSinceEpoch ); + if ( expiration.isValid() && expiration > QDateTime::currentDateTime() ) + { + authCodeFlow->setToken( obj["token"].toString() ); + } + } + authCodeFlow->setRefreshToken( obj["refreshToken"].toString() ); }