Tested automatic tokens renewals.

This commit is contained in:
Martin Rotter 2017-10-10 06:47:04 +02:00
parent 23c853bc24
commit d8e242ac46

View File

@ -103,7 +103,9 @@ void OAuth2Service::timerEvent(QTimerEvent* event) {
if (m_timerId >= 0 && event->timerId() == m_timerId) { if (m_timerId >= 0 && event->timerId() == m_timerId) {
event->accept(); event->accept();
if (tokensExpireIn() < QDateTime::currentDateTime()) { QDateTime window_about_expire = tokensExpireIn().addSecs(-60 * 15);
if (window_about_expire < QDateTime::currentDateTime()) {
// We try to refresh access token, because it probably expires soon. // We try to refresh access token, because it probably expires soon.
qDebug("Refreshing automatically access token."); qDebug("Refreshing automatically access token.");
refreshAccessToken(); refreshAccessToken();
@ -163,30 +165,29 @@ void OAuth2Service::refreshAccessToken(QString refresh_token) {
} }
void OAuth2Service::tokenRequestFinished(QNetworkReply* network_reply) { void OAuth2Service::tokenRequestFinished(QNetworkReply* network_reply) {
QJsonDocument jsonDocument = QJsonDocument::fromJson(network_reply->readAll()); QJsonDocument json_document = QJsonDocument::fromJson(network_reply->readAll());
QJsonObject rootObject = jsonDocument.object(); QJsonObject root_obj = json_document.object();
qDebug() << "Token response:"; qDebug() << "Token response:" << json_document.toJson();
qDebug() << jsonDocument.toJson();
if (rootObject.keys().contains("error")) { if (root_obj.keys().contains("error")) {
QString error = rootObject.value("error").toString(); QString error = root_obj.value("error").toString();
QString error_description = rootObject.value("error_description").toString(); QString error_description = root_obj.value("error_description").toString();
logout(); logout();
emit tokensRetrieveError(error, error_description); emit tokensRetrieveError(error, error_description);
} }
else { else {
int expires = rootObject.value(QL1S("expires_in")).toInt(); int expires = root_obj.value(QL1S("expires_in")).toInt();
setTokensExpireIn(QDateTime::currentDateTime().addSecs(expires)); setTokensExpireIn(QDateTime::currentDateTime().addSecs(expires));
setAccessToken(rootObject.value(QL1S("access_token")).toString()); setAccessToken(root_obj.value(QL1S("access_token")).toString());
setRefreshToken(rootObject.value(QL1S("refresh_token")).toString()); setRefreshToken(root_obj.value(QL1S("refresh_token")).toString());
qDebug() << "Obtained refresh token" << refreshToken() << "- expires on date/time" << tokensExpireIn(); qDebug() << "Obtained refresh token" << refreshToken() << "- expires on date/time" << tokensExpireIn();
emit tokensReceived(accessToken(), refreshToken(), rootObject.value("expires_in").toInt()); emit tokensReceived(accessToken(), refreshToken(), expires);
} }
network_reply->deleteLater(); network_reply->deleteLater();
@ -271,7 +272,7 @@ void OAuth2Service::logout() {
void OAuth2Service::startRefreshTimer() { void OAuth2Service::startRefreshTimer() {
if (!refreshToken().isEmpty()) { if (!refreshToken().isEmpty()) {
m_timerId = startTimer(15, Qt::VeryCoarseTimer); m_timerId = startTimer(1000 * 60 * 15, Qt::VeryCoarseTimer);
} }
} }