iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 22
1

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是否經註冊過,如果已註冊,則顯示此畫面。

總共會有兩種情境,第一種,首次登入,順便將資料寫入資料庫。
http://ithelp.ithome.com.tw/upload/images/20161222/20006132hGDINheYbl.png

第二種,重新使用Facebook Login,但已是我們APP的會員。
http://ithelp.ithome.com.tw/upload/images/20161222/20006132xMxPDb3zTU.png

http://ithelp.ithome.com.tw/upload/images/20161222/20006132Dr6XN7GsOE.png

以上就是關於Cordova Facebook Login的介紹,相關程式碼,將在明天的內容,一併介紹。

(待)

2016/12/22 Sunallen


上一篇
{"21":"Facebook Login(WebStorage)}
下一篇
{"23":"Yahoo Weather"}
系列文
我的網站、您的手機、它的Cordova、誰的第三方31

尚未有邦友留言

立即登入留言