Google的服務(wù)器發(fā)起登錄請求之后,得到了免死金牌token,以后就可以拿著這個token去犯罪,不是,去Google的其它服務(wù)取數(shù)據(jù),但是在此之前應(yīng)該第一,從響應(yīng)的消息中把token找出來;第二,這個token應(yīng)該想辦法保存起來,以備以后使用。

上一節(jié)已經(jīng)把響應(yīng)的內(nèi)容打印了出來,它的格式也很簡單,因此用下面的代碼很容易就可以把響應(yīng)的內(nèi)容轉(zhuǎn)成方便我們使用的形式,即一個map的形式,通過鍵值對來存儲:


function parseResponse(response) {

 
var responseLines = response.split('\n');

 var responseData = {};

 for (var i = 0; i < responseLines.length; ++i) {

    var split = responseLines[i].indexOf('=');

    var key = responseLines[i].substr(0, split);

    var value = responseLines[i].substr(split + 1);

    responseData[key] = value;

 }

 return responseData;

};

在我們的相應(yīng)回調(diào)函數(shù)里,就可以調(diào)用這個函數(shù)處理一下響應(yīng),從結(jié)果中取鍵為”Auth”這一項(xiàng)的值,并保存在Gadget Host為我們準(zhǔn)備好的一個負(fù)責(zé)持久化的對象options中。找到上一節(jié)Main.prototype.login的代碼,把響應(yīng)的回調(diào)函數(shù)改成下面的樣子:


xhRequest.onreadystatechange =function(){

           
if (!xhRequest) {

                 
return;

           }

           
if (xhRequest.readyState != 4) {

                 
return;

           }

           
//調(diào)用新寫的函數(shù)來解析響應(yīng)內(nèi)容

var responseData = parseResponse(xhRequest.responseText);

           
var token = responseData['Auth'];

           
//這里來記住已經(jīng)登錄過的用戶名和密碼

           options.putValue(
"username","mymail2009.test@gmail.com");

           options.putValue(
"password","mymail2009");

           options.putValue(
"token", token);

           options.encryptValue(
"token");

           main.onLoginSuccess();

}

最后加的一行main.onLoginSuccess()就是我們下一步動作的起點(diǎn),在這里應(yīng)該開始去取用戶mymail2009.test@gmail.com所擁有的相冊信息了,我們先聲明一個空函數(shù)放在那里。


Main.prototype.onLoginSuccess=function(){

  
this.fetchAlbumsInfo();

};

//取相冊信息的函數(shù)

Main.prototype.fetchAlbumsInfo
=function() {

};

繼續(xù)之前多扯兩句options這個對象,這是Gadget Host提供的持久化對象,你可以從代碼中看到它還有對存儲的內(nèi)容進(jìn)行加密的功能,Google的文檔中提到這個options對象在后臺實(shí)際上是把內(nèi)容保存在一個XML文件中,當(dāng)然該文件的位置是不會告訴你的啦,哈哈。

下一節(jié)將向Picasa服務(wù)發(fā)起請求!