OAuth: Pass client auth in header instead of url
authorChristian Kamm <mail@ckamm.de>
Mon, 11 Sep 2017 10:23:52 +0000 (12:23 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 5 Oct 2017 20:01:32 +0000 (22:01 +0200)
To play more nicely with redirects.

src/gui/creds/oauth.cpp

index 9926700f7db5fa8885cc2a6d572cf2d3dd305de6..4f0b72a9f39466abf248a02cd648cb5df00bc141 100644 (file)
@@ -79,10 +79,11 @@ void OAuth::start()
                     + QLatin1String("/index.php/apps/oauth2/api/v1/token?grant_type=authorization_code&code=")
                     + code
                     + QLatin1String("&redirect_uri=http://localhost:") + QString::number(_server.serverPort()));
-                requestToken.setUserName(Theme::instance()->oauthClientId());
-                requestToken.setPassword(Theme::instance()->oauthClientSecret());
                 QNetworkRequest req;
                 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
+                QString basicAuth = QString("%1:%2").arg(
+                    Theme::instance()->oauthClientId(), Theme::instance()->oauthClientSecret());
+                req.setRawHeader("Authorization", "Basic " + basicAuth.toUtf8().toBase64());
                 auto job = _account->sendRequest("POST", requestToken, req);
                 QObject::connect(job, &SimpleNetworkJob::finishedSignal, this, [this, socket](QNetworkReply *reply) {
                     auto jsonData = reply->readAll();