雖然titanium一向號稱可以使用同樣的程式碼同時製作出android跟ios的app,但實際上事情總不是這麼的歡樂….
像是一個簡單的是用twitter帳號來進行登入的動作,由於api的工程師是使用cookie跟CSRF token配對好的金鑰來跟api端進行認證,ios因為webview跟HTTPClient會自動共用cookie,所以只要在webview登入twitter後,就可以以新建立的HTTPClient來跟api索取token然後進行跟api端的互動。
只是到了android的時候,webview與HTTPClient不再自動共用cookie,所以我們得要在HTTPClient把object傳送到api之前利用setRequestHeader帶入Cookie,才有辦法取得正確的token。
所以問題就在於怎麼在登入成功的webview中,取出當時的cookie。接著google會告訴我們在這邊有這麼一個方法:
webView.addEventListener('load',function(e) { var cookies = webView.evalJS("document.cookie").split(";"); Ti.API.info( "# of cookies -> " + cookies.length ); for (i = 0; i <= cookies.length - 1; i++) { Ti.API.info( "cookie -> " + cookies[i] ); } }); |
可惜我所得到的卻始終是空值(NULL)。
繼續閱讀