2011-06-17 102 views
0

我的手機應用程序首先需要用戶登錄Facebook,然後返回到應用程序進一步操作。appcelerator titanium mobile Facebook登錄 - 還沒有設置Titanium.Facebook.loggedIn登錄後

成功登錄fb後,預計Titanium.Facebook.loggedIn將爲true,並且該應用可以獲取Ti.Facebook.uid中的值。

然而,情況並非總是如此。有時,成功登錄fb並返回應用程序後,Titanium.Facebook.loggedIn仍然是錯誤的,肯定無法獲取Ti.Facebook.uid。 但是,當用戶註銷並在同一個應用程序部分內再次登錄時,它將正常工作。因此,我的應用有時需要用戶登錄Facebook兩次。

你有什麼想法嗎?代碼如下所示。

var login = Titanium.Facebook.createLoginButton({ 
    top: 100, style:'wide' 
}); 

var actionsView = Ti.UI.createView({ 
    top: 0, left: 0, right: 0, touchEnabled: false, height: 320 
}); 

var loginView = Ti.UI.createView({ 
    top: 0, left: 0, right: 0, visible: !Titanium.Facebook.loggedIn, height: Titanium.Platform.displayCaps.platformHeight,opacity:0.85, backgroundColor:'#fff' 
}); 

loginView.add(login); 

Titanium.Facebook.addEventListener('login', function(e) { 
    if (e.success) { 
     if (Titanium.Facebook.loggedIn){ 
     loginView.hide(); 
     actionsView.touchEnabled=true; 
     }else{ 
     statusAlert = Titanium.UI.createAlertDialog({title:appname,message:'Login failed.'}); 
     statusAlert.show(); 
     } 

    if (e.error) { 
     alert(e.error); 
    } 
}); 

var logout = Titanium.Facebook.createLoginButton({ 
    top: 300, style:'wide', visible: false 
}); 
+0

這是1.6或更高,你有權限問FB設置? – bh88

回答

0

你可以使用Titanium.Facebook.uid代替,這將是這樣的:

if (Titanium.Facebook.uid){ 

可能是你所遇到的問題是由於一個老版本的鈦。

0

通過Facebook成功登錄後,將用戶ID保存到全局變量或應用程序屬性中。 我會喜歡的應用程序性能,因爲除非用戶從Facebook註銷UID將保持在應用性能 I-E

Ti.App.Properties.setString('uid', Ti.Facebook.uid); 

所以當你使用你的應用程序回來只是檢查UID第一。

var fb_id = Ti.App.Properties.getString('uid'); 
if(fb_id){ 
// your code 
} 

並且當您註銷清除變量與''或空。

0

可能有點遲了一個額外的答案,但我在iOS上有類似的問題。通過FB登錄工作很好,但完全關閉應用後,Facebook模塊在詢問UID時返回'undefined'。我通過調用未記錄的'初始化'方法來解決它。

按照這裏的安裝指南:https://docs.appcelerator.com/platform/latest/#!/api/Modules.Facebook

然後嘗試這個例子

var fb = require('facebook'); 

fb.addEventListener('login', function(e) { 
    if (e.success) { 
     alert('login from uid: ' + e.uid + ', name: ' + JSON.parse(e.data).name); 
     showFriends(); 
    } else if (e.cancelled) { 
     // user cancelled 
     alert('cancelled'); 
    } else { 
     alert(e.error); 
    } 
}); 

fb.initialize(); 

function authorize(e) { 

    fb.authorize(); 
} 

function showFriends() { 

    alert("fb:\n" + fb.uid + "\n" + fb.accessToken + "\n" + fb.expirationDate); 
    fb.requestWithGraphPath('me/friends', { 
     limit : 1000, 
    }, 'GET', function(e) { 
     if (e.success) { 
      // Note: only friends who installed this app are returned 
      var result = JSON.parse(e.result); 

      alert("successfully loaded friends"); 

      // each data (user) has id + name fields 

     } else if (e.error) { 
      alert('fb friends: ' + e.error); 
     } else { 
      alert('Unknown response'); 
     } 
    }); 
} 

if (fb.loggedIn) { 
    $.button.hide(); 
    alert("already logged in"); 
} else { 
    $.button.show(); 
} 

$.index.open(); 

當然,你需要在你看來像

<Button id="button" onClick="authorize" >log in</Button>