0

我想添加Facebook登錄到我的Alloy/Titanium ios應用。使用Alloy或Titanium在iOS應用中檢查Facebook登錄狀態

到目前爲止,我有以下代碼:

var fb = require('facebook'); 
fb.initialize(); 
fb.setLoginBehavior(fb.LOGIN_BEHAVIOR_NATIVE); 
fb.permissions = ['email', 'public_profile']; 

function doFacebookLogin() { 
    // occurs when a button is clicked 
    if (fb.loggedIn) { 
     facebookLogin(fb); 
    } else { 
     fb.authorize(); 
    } 
} 

fb.addEventListener('login', function(event) { 
    if (event.success) { 
     facebookLogin(fb); 
    } 
}); 

function facebookLogin(fb) { 
    Ti.API.info(fb.accessToken); 
    // send the fb.accessToken server-side and register & login the user 
} 

對於大部分的代碼工作正常!

問題是當用戶取消授權應用時,fb.login仍然返回true,因此使用相同的訪問令牌。

如何檢查用戶是否已取消授權我的應用程序。我知道它使用使用FB.getLoginStatus JavaScript的SDK是容易實現:https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus,但我找不到鋁合金/鈦合金等價物:https://docs.appcelerator.com/platform/latest/#!/api/Modules.Facebook

回答

0

需要調用fb.logout()設置fb.loggedIn to false

fb.logout清除訪問令牌並將登錄狀態重置爲false。

注意:我不確定清除Titanium模塊中的訪問令牌是否也會清除FB服務器上的令牌。所以即使在撥打fb.logout()之後,當且僅當在fb服務器上未過期時,您可能會收到相同的訪問令牌。

瞭解更多關於Facebook Access Token here

+0

這是我做事情的原始的方式。但是,只有在用戶取消授權我的應用程序時纔有所幫助。如果用戶沒有取消對我的應用程序的授權,並且我這樣做,它會給我一個消息,說明「該應用程序已經被用戶授權」。因此,我需要找到一種方法來檢查用戶的登錄狀態。 –

+0

這是實現FB的正常程序。所有的Titanium應用程序都使用相同的流程甚至本地應用我剛剛在我的Android設備上檢查了Candy Crush遊戲,它的Facebook實現與Titanium完全相同。 此外,我不認爲有可能做你想做的事情,因爲**這個應用程序已經被用戶授權** **是由Facebook處理和顯示的,而不是由SDK或模塊來處理。 –

相關問題