2013-07-24 9 views
0

我爲cordova使用phonegap/cordova 2.4和facebook插件。在android上導致fb autologin是什麼,以及如何「等待」用戶登錄?

情況1:打開的應用,因爲「不登錄的用戶」(=第一次):

應用示出了登錄按鈕 - >使用的Facebook用戶&通登錄 - >退出按鈕被示出。

情況2:打開的應用程序的第二時間(預先登錄): - 在所示>註銷按鈕

應用自動記錄的用戶英寸

這是我想要的行爲,但我面臨一個問題:

使用jQuery(.hide().show())隱藏包含我的登錄和註銷按鈕div的。問題是,在情況2中,示出了用於1或2秒的登錄-DIV,因爲其調節顯示和的div的隱藏的代碼是在觸發:

FB.Event.subscribe('auth.login', function(response) { 

我的問題:

我如何確保登錄按鈕僅在情況1中顯示,而不是在情況2中顯示1-2秒?我嘗試這樣做:

function getLoginStatus() { 
       FB.getLoginStatus(function(response) { 
            if (response.status == 'connected') { 
            //alert('logged in'); 
            } else { 
            //alert('not logged in'); 
            $('#loggedin').hide(); 
            //show login button: 
          $('#loggedout').show(); 
           $('#loading').hide(); 
            } 
            }); 
      } 
... 
document.addEventListener('deviceready', function() { 

try { 
//alert('Device is ready!'); 
FB.init({ appId: "xxx", nativeInterface: CDV.FB, useCachedDialogs: false }); 
getLoginStatus(); 
... 

與getLoginStatus的問題()是,在這個函數被調用時,用戶實際上是在註銷。我的應用程序自動在AFTER那。我需要autologin,但我不知道是什麼導致它...是FB.init?

任何幫助非常感謝!

回答

1

我該做的最好的事情是保存一個布爾上檢查「已登錄」或「未登錄」 SharedPreferences和的onCreate檢查的是,obviuosly速度比通過互聯網檢查..

當您登錄第一次和日誌去右(ID login_success)

if(login_success) { 
SharedPreferences settings = getSharedPreferences("key", MODE_PRIVATE); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putBoolean("bool_login",true); 
editor.commit(); 
} 

現在,當您創建活動,在onCreate方法檢查該值:

onCreate() { 
if(getSharedPreferences("key",MODE_PRIVATE).getBoolean("bool_login",false)) { 
    //True only if bool_login is true 
    //hide your box for login 
} 

何pe澄清

相關問題