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) {
|
||||
QByteArray reply = refreshReply->readAll();
|
||||
QVariantMap tokens = parseTokenResponse(reply);
|
||||
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);
|
||||
if ( tokens.contains(QStringLiteral("error")) ) {
|
||||
qDebug() << " Error refreshing token" << tokens.value(QStringLiteral("error")).toMap().value(QStringLiteral("message")).toString().toLocal8Bit().constData();
|
||||
unlink();
|
||||
}
|
||||
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);
|
||||
setLinked(true);
|
||||
Q_EMIT linkingSucceeded();
|
||||
Q_EMIT refreshFinished(QNetworkReply::NoError);
|
||||
qDebug() << " New token expires in" << expires() << "seconds";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user