HTML5 WebStorage分為兩個部份,SessionStorage和LocalStorage ,因為要用到的是LocalStorage所以Session那個部份就不提了。
還記得OpenFB這個Plugin嗎? 它負責處理Cordova 和 Facebook Login 的資料交換,並確定是否成功登入Facebook。因此,我在那個主程式openfb.js裡面,加入了關於LocalStorage的內容,讓使用者進到我們的APP後,就可以開始檢查,「是否已登入Facebook過」,再根據檢查的結果,而顯示不同的內容。
LocalStorage使用方式,很簡單。
//設定
localStorage.setItem("fb_name", data.name);//設定一個儲存空間,叫做fb_name,裡面要存放的內容,則是data.name的內容
//取出(讀取)
localStorage.getItem("fb_name");
//清空(刪除)
localStorage.removeItem("fb_name");
基本,就是上述這三種。
所以,當使用者透過Facebook Login 成功登入之後,我們就可以設定一個LocalStorage,然後,當使用者再次開啟APP時,檢查是否存在LocalStorage,像下面這樣。
if (localStorage.getItem("fb_token") == null) {
$("#login_show").show();
} else {
$("#login_show").hide();
$("#menu_button").show();
$("#info").html("您之前已成功登入過");
document.getElementById("userName").innerHTML = localStorage.getItem("fb_name");
}
這樣就可以解決第一個問題「1.每次都要重新登入嗎?」答案是,不需要。
第二個問題,「可以在Cordova環境中,使用PHP嗎?」答案是不行,就和一般前端網頁一樣。
那該如何將「存在於智慧型手機上的資料,往資料庫送呢?」
是的,AJAX( Asynchronous JavaScript and XML),AJAX並不是今年才開發出來的新技術,已存在多年。我們使用Cordova打包成的APP,需要連線回主機的時候,則可以透過這個方式,存取主機資料庫裡的資料。
它的使用方式不難,向下列這個範例:
$.ajax({
url: "http://某網址/某檔案", //因為是打包成APP,所以一般的使用者,不會知道也看不到,是連線到什麼地方
data:"u_id=" + data.id + "&name=" + data.name,//要傳送到上面那個某檔案裡所帶的參數名稱和內容
type:"POST", //傳送方式為post
success: function(callbackdata){ //上述步驟成功後,要做什麼事
alert(callbackdata);
},
error: errorHandler
}
});
function errorHandler(error) {
alert(error.message);
}
這樣,在使用者,透過Facebook Login功能之後,我們可以先檢查LocalStorage 是否已有相關資料,並將我們取得的Facebook UserID,送到遠端的資料庫做比對,確認此UserID是否經註冊過,如果已註冊,則顯示此畫面。
總共會有兩種情境,第一種,首次登入,順便將資料寫入資料庫。
第二種,重新使用Facebook Login,但已是我們APP的會員。
以上就是關於Cordova Facebook Login的介紹,相關程式碼,將在明天的內容,一併介紹。
(待)
2016/12/22 Sunallen