From: Jan Dumon Date: Wed, 17 Mar 2010 20:39:51 +0000 (+0100) Subject: Switched to Google's new authentication method. X-Git-Url: http://vcs.maemo.org/git/?p=grr;a=commitdiff_plain;h=f79062ee733238a2fdb5672ab95052adc1e99a86 Switched to Google's new authentication method. --- diff --git a/src/googlereader.cpp b/src/googlereader.cpp index e9dfc19..dcb76dc 100644 --- a/src/googlereader.cpp +++ b/src/googlereader.cpp @@ -41,6 +41,7 @@ void Feed::fetch(bool cont) { url.addEncodedQueryItem("r", "o"); } + request.setRawHeader("Authorization", reader->getAuth()); request.setUrl(url); reply = reader->getManager()->get(request); connect(reply, SIGNAL(finished()), SLOT(fetchFinished())); @@ -110,10 +111,10 @@ GoogleReader::GoogleReader() { connect(&manager, SIGNAL(finished(QNetworkReply*)), SLOT(downloadFinished(QNetworkReply*))); - SID = NULL; + auth.clear(); updateSubscriptionsPending = false; updateUnreadPending = false; - SIDPending = false; + authPending = false; login_url.setUrl("https://www.google.com/accounts/ClientLogin"); subscriptions_url.setUrl("http://www.google.com/reader/api/0/subscription/list?output=json"); @@ -148,7 +149,7 @@ void GoogleReader::downloadFinished(QNetworkReply *reply) { if (reply->error()) { qDebug() << "Download of" << url << "failed:" << qPrintable(reply->errorString()); if(url == login_url) { - SIDPending = false; + authPending = false; emit loginFailed("Incorrect username or password"); } else if(url == edittag_url) @@ -157,17 +158,15 @@ void GoogleReader::downloadFinished(QNetworkReply *reply) { } else if(url == login_url) { QByteArray data = reply->readAll(); - data.remove(0, data.indexOf("SID=", 0) + 4); + data.remove(0, data.indexOf("Auth=", 0) + 5); data.remove(data.indexOf("\n", 0), 1024); - SID = strdup(data.data()); + auth.clear(); + auth.append("GoogleLogin auth="); + auth.append(data); - qDebug() << "SID:" << SID; + qDebug() << "Auth:" << auth; - manager.cookieJar()->setCookiesFromUrl( - QList() << QNetworkCookie("SID", SID), - QUrl("http://www.google.com")); - - SIDPending = false; + authPending = false; getToken(); @@ -283,12 +282,12 @@ void GoogleReader::parseUnread(QByteArray data) { emit updateUnreadComplete(); } -void GoogleReader::getSID() { +void GoogleReader::clientLogin() { - if(SIDPending) + if(authPending) return; - SIDPending = true; + authPending = true; QNetworkRequest request; request.setUrl(login_url); @@ -309,6 +308,7 @@ void GoogleReader::getSID() { void GoogleReader::getToken() { QNetworkRequest request; + request.setRawHeader("Authorization", auth); request.setUrl(token_url); manager.get(request); } @@ -319,12 +319,13 @@ void GoogleReader::updateSubscriptions() { if(updateSubscriptionsPending) return; - if(!SID) { + if(auth == "") { updateSubscriptionsPending = true; - getSID(); + clientLogin(); return; } + request.setRawHeader("Authorization", auth); request.setUrl(subscriptions_url); manager.get(request); } @@ -335,12 +336,13 @@ void GoogleReader::updateUnread() { if(updateUnreadPending) return; - if(!SID) { + if(auth == "") { updateUnreadPending = true; - getSID(); + clientLogin(); return; } + request.setRawHeader("Authorization", auth); request.setUrl(unread_url); manager.get(request); } @@ -390,6 +392,7 @@ void Feed::markRead() { /* Mark all the remaining items read */ QNetworkRequest request; + request.setRawHeader("Authorization", reader->getAuth()); request.setUrl(reader->markallread_url); buffer.open(QBuffer::ReadWrite | QBuffer::Truncate); @@ -439,6 +442,7 @@ void Entry::markRead(bool mark_read) { return; QNetworkRequest request; + request.setRawHeader("Authorization", feed->reader->getAuth()); request.setUrl(feed->reader->edittag_url); postread.open(QBuffer::ReadWrite | QBuffer::Truncate); @@ -468,6 +472,7 @@ void Entry::markStar(bool mark_star) { return; QNetworkRequest request; + request.setRawHeader("Authorization", feed->reader->getAuth()); request.setUrl(feed->reader->edittag_url); poststar.open(QBuffer::ReadWrite | QBuffer::Truncate); @@ -501,6 +506,7 @@ void Entry::markShared(bool mark_shared) { return; QNetworkRequest request; + request.setRawHeader("Authorization", feed->reader->getAuth()); request.setUrl(feed->reader->edittag_url); postshared.open(QBuffer::ReadWrite | QBuffer::Truncate); diff --git a/src/googlereader.h b/src/googlereader.h index da927aa..360f7dd 100644 --- a/src/googlereader.h +++ b/src/googlereader.h @@ -139,24 +139,28 @@ class GoogleReader: public QObject { void setLogin(QString l) { login = l; } void setPasswd(QString p) { passwd = p; } void logOut() { - SID = NULL; + auth = NULL; token = NULL; updateSubscriptionsPending = false; updateUnreadPending = false; - SIDPending = false; + authPending = false; + } + + QByteArray getAuth() { + return auth; } private slots: void downloadFinished(QNetworkReply *reply); private: - char *SID; + QByteArray auth; QBuffer buffer; bool updateSubscriptionsPending; bool updateUnreadPending; - bool SIDPending; + bool authPending; - void getSID(); + void clientLogin(); void parseSubscriptions(QByteArray data); void parseUnread(QByteArray data);