我正在使用phonegap / cordova 2.4和cordova的facebook插件。
情况1:将应用程序打开为“未登录用户”(=第一次):
app显示登录按钮 - >使用facebook用户登录&通过 - >注销按钮显示。
情况2:第二次打开应用程序(之前已登录):
app会自动将用户登录到 - >退出按钮显示。
这是我想要的行为,但我遇到了一个问题:
我使用jquery(.hide()
和.show()
)来隐藏包含我的登录和注销按钮的div。问题是,在情境2中,login-div显示1或2秒,因为调节显示和隐藏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()的问题在于,在调用此函数时,用户实际上已注销。我的应用程序在此之后自动生成。我需要自动登录,但我想知道它是什么造成的......是FB.init吗?
非常感谢任何帮助!
答案 0 :(得分:1)
我想最好的办法是在SharedPreferences上保存一个检查“Logged”或“Not Logged”的布尔值,并在onCreate上检查,比通过互联网检查要快得多。
当您第一次登录并且日志正确时(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
}
希望澄清