mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-05 00:09:32 -04:00
[o2] If an o2 auth refresh reply contains an error message, then
the refresh was NOT successful and we need to unlink the auth so that a new login will be prompted Fixes connections to ESRI portal fail after refresh token expires on the server
This commit is contained in:
parent
81b89f89ee
commit
9af5a531b1
23
external/o2/src/o2.cpp
vendored
23
external/o2/src/o2.cpp
vendored
@ -440,16 +440,23 @@ void O2::onRefreshFinished() {
|
|||||||
if (refreshReply->error() == QNetworkReply::NoError) {
|
if (refreshReply->error() == QNetworkReply::NoError) {
|
||||||
QByteArray reply = refreshReply->readAll();
|
QByteArray reply = refreshReply->readAll();
|
||||||
QVariantMap tokens = parseTokenResponse(reply);
|
QVariantMap tokens = parseTokenResponse(reply);
|
||||||
setToken(tokens.value(O2_OAUTH2_ACCESS_TOKEN).toString());
|
if ( tokens.contains(QStringLiteral("error")) ) {
|
||||||
setExpires(QDateTime::currentMSecsSinceEpoch() / 1000 + tokens.value(O2_OAUTH2_EXPIRES_IN).toInt());
|
qDebug() << " Error refreshing token" << tokens.value(QStringLiteral("error")).toMap().value(QStringLiteral("message")).toString().toLocal8Bit().constData();
|
||||||
const QString refreshToken = tokens.value(O2_OAUTH2_REFRESH_TOKEN).toString();
|
unlink();
|
||||||
if ( !refreshToken.isEmpty() )
|
}
|
||||||
setRefreshToken(refreshToken);
|
else
|
||||||
|
{
|
||||||
|
setToken(tokens.value(O2_OAUTH2_ACCESS_TOKEN).toString());
|
||||||
|
setExpires(QDateTime::currentMSecsSinceEpoch() / 1000 + tokens.value(O2_OAUTH2_EXPIRES_IN).toInt());
|
||||||
|
const QString refreshToken = tokens.value(O2_OAUTH2_REFRESH_TOKEN).toString();
|
||||||
|
if ( !refreshToken.isEmpty() )
|
||||||
|
setRefreshToken(refreshToken);
|
||||||
|
setLinked(true);
|
||||||
|
qDebug() << " New token expires in" << expires() << "seconds";
|
||||||
|
Q_EMIT linkingSucceeded();
|
||||||
|
}
|
||||||
timedReplies_.remove(refreshReply);
|
timedReplies_.remove(refreshReply);
|
||||||
setLinked(true);
|
|
||||||
Q_EMIT linkingSucceeded();
|
|
||||||
Q_EMIT refreshFinished(QNetworkReply::NoError);
|
Q_EMIT refreshFinished(QNetworkReply::NoError);
|
||||||
qDebug() << " New token expires in" << expires() << "seconds";
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user