Index: grr/src/googlereader.cpp
===================================================================
--- grr.orig/src/googlereader.cpp	2010-03-15 13:49:04.000000000 +0100
+++ grr/src/googlereader.cpp	2010-03-15 14:23:16.000000000 +0100
@@ -41,6 +41,7 @@
 		url.addEncodedQueryItem("r", "o");
 	}
 
+	request.setRawHeader("Authorization", reader->getAuth());
 	request.setUrl(url);
 	reply = reader->getManager()->get(request);
 	connect(reply, SIGNAL(finished()), SLOT(fetchFinished()));
@@ -111,10 +112,10 @@
 	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");
@@ -149,7 +150,7 @@
 	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)
@@ -158,17 +159,15 @@
 	}
 	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>() << QNetworkCookie("SID", SID),
-			QUrl("http://www.google.com"));
-
-		SIDPending = false;
+		authPending = false;
 
 		getToken();
 
@@ -284,12 +283,12 @@
 	emit updateUnreadComplete();
 }
 
-void GoogleReader::getSID() {
+void GoogleReader::clientLogin() {
 
-	if(SIDPending)
+	if(authPending)
 		return;
 
-	SIDPending = true;
+	authPending = true;
 
 	QNetworkRequest request;
 	request.setUrl(login_url);
@@ -310,6 +309,7 @@
 
 void GoogleReader::getToken() {
 	QNetworkRequest request;
+	request.setRawHeader("Authorization", auth);
 	request.setUrl(token_url);
 	manager.get(request);
 }
@@ -320,12 +320,13 @@
 	if(updateSubscriptionsPending)
 		return;
 
-	if(!SID) {
+	if(auth == "") {
 		updateSubscriptionsPending = true;
-		getSID();
+		clientLogin();
 		return;
 	}
 
+	request.setRawHeader("Authorization", auth);
 	request.setUrl(subscriptions_url);
 	manager.get(request);
 }
@@ -336,12 +337,13 @@
 	if(updateUnreadPending)
 		return;
 
-	if(!SID) {
+	if(auth == "") {
 		updateUnreadPending = true;
-		getSID();
+		clientLogin();
 		return;
 	}
 
+	request.setRawHeader("Authorization", auth);
 	request.setUrl(unread_url);
 	manager.get(request);
 }
@@ -391,6 +393,7 @@
 		/* Mark all the remaining items read */
 
 		QNetworkRequest request;
+		request.setRawHeader("Authorization", reader->getAuth());
 		request.setUrl(reader->markallread_url);
 
 		buffer.open(QBuffer::ReadWrite | QBuffer::Truncate);
@@ -440,6 +443,7 @@
 		return;
 
 	QNetworkRequest request;
+	request.setRawHeader("Authorization", feed->reader->getAuth());
 	request.setUrl(feed->reader->edittag_url);
 
 	postread.open(QBuffer::ReadWrite | QBuffer::Truncate);
@@ -469,6 +473,7 @@
 		return;
 
 	QNetworkRequest request;
+	request.setRawHeader("Authorization", feed->reader->getAuth());
 	request.setUrl(feed->reader->edittag_url);
 
 	poststar.open(QBuffer::ReadWrite | QBuffer::Truncate);
@@ -502,6 +507,7 @@
 		return;
 
 	QNetworkRequest request;
+	request.setRawHeader("Authorization", feed->reader->getAuth());
 	request.setUrl(feed->reader->edittag_url);
 
 	postshared.open(QBuffer::ReadWrite | QBuffer::Truncate);
Index: grr/src/googlereader.h
===================================================================
--- grr.orig/src/googlereader.h	2010-03-15 14:04:25.000000000 +0100
+++ grr/src/googlereader.h	2010-03-15 14:16:42.000000000 +0100
@@ -139,24 +139,28 @@
 		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);
 
