Withings - Use new OAuth2 API to get access and refresh tokens

Fixes #4152
This commit is contained in:
Alejandro Martinez
2022-02-02 16:19:22 -03:00
parent 2f1194b0bd
commit 5237b460f1
2 changed files with 11 additions and 5 deletions

View File

@@ -328,10 +328,11 @@ OAuthDialog::urlChanged(const QUrl &url)
} else if (site == WITHINGS) {
urlstr = QString("https://account.withings.com/oauth2/token?");
urlstr = QString("https://wbsapi.withings.net/v2/oauth2");
params.addQueryItem("client_id", GC_NOKIA_CLIENT_ID);
params.addQueryItem("client_secret", GC_NOKIA_CLIENT_SECRET);
params.addQueryItem("redirect_uri","https://www.goldencheetah.org");
params.addQueryItem("action", "requesttoken");
params.addQueryItem("grant_type", "authorization_code");
}
@@ -453,6 +454,10 @@ OAuthDialog::networkRequestFinished(QNetworkReply *reply)
access_token = document.object()["access_token"].toString();
if (site == POLAR) polar_userid = document.object()["x_user_id"].toDouble();
if (site == RIDEWITHGPS) access_token = document.object()["user"].toObject()["auth_token"].toString();
if (site == WITHINGS) {
refresh_token = document.object()["body"].toObject()["refresh_token"].toString();
access_token = document.object()["body"].toObject()["access_token"].toString();
}
}
// if we failed to extract then we have a big problem

View File

@@ -85,12 +85,13 @@ WithingsDownload::getBodyMeasures(QString &error, QDateTime from, QDateTime to,
QString refresh_token = appsettings->cvalue(context->athlete->cyclist, GC_NOKIA_REFRESH_TOKEN).toString();
postData.addQueryItem("action", "requesttoken");
postData.addQueryItem("grant_type", "refresh_token");
postData.addQueryItem("client_id", GC_NOKIA_CLIENT_ID );
postData.addQueryItem("client_secret", GC_NOKIA_CLIENT_SECRET );
postData.addQueryItem("refresh_token", refresh_token );
QUrl url = QUrl( "https://account.withings.com/oauth2/token" );
QUrl url = QUrl( "https://wbsapi.withings.net/v2/oauth2" );
emit downloadStarted(100);
@@ -110,9 +111,9 @@ WithingsDownload::getBodyMeasures(QString &error, QDateTime from, QDateTime to,
QJsonParseError parseResult;
QJsonDocument migrateJson = QJsonDocument::fromJson(response.toUtf8(), &parseResult);
access_token = migrateJson.object()["access_token"].toString();
QString refresh_token = migrateJson.object()["refresh_token"].toString();
QString userid = QString("%1").arg(migrateJson.object()["userid"].toInt());
access_token = migrateJson.object()["body"].toObject()["access_token"].toString();
QString refresh_token = migrateJson.object()["body"].toObject()["refresh_token"].toString();
QString userid = QString("%1").arg(migrateJson.object()["body"].toObject()["userid"].toInt());
if (access_token != "") appsettings->setCValue(context->athlete->cyclist, GC_NOKIA_TOKEN, access_token);