2016-11-29 5 views
0

Я создаю веб-приложение, которое позволяет пользователям входить в Facebook с помощью OpenFB для Кордовы. Я хочу только некоторые функции доступны для просмотра, если они вошли в систему я пытаюсь запустить проверку на состояние входа и переориентировав, если не авторизованы Это то, что я до сих пор:..Перенаправление страницы, если пользователь не вошел в систему

<head> 
    <script> 
    if(openFB.getLoginStatus.loginStatus = 'unknown'){ 
        window.location ="#/app/home"; 
    } 
    </script> 
</head> 

Функция getLoginStats является как таковой:

function getLoginStatus(callback) { 
    var token = tokenStore.fbAccessToken, 
     loginStatus = {}; 
    if (token) { 
     loginStatus.status = 'connected'; 
     loginStatus.authResponse = {accessToken: token}; 
    } else { 
     loginStatus.status = 'unknown'; 
    } 
    if (callback) callback(loginStatus); 
} 

Когда я console.log значение, которое я получаю undefined. Даже при входе в систему с facebook. Мне что-то не хватает?

Выход код просил:

//logout function 
$scope.fbLogout = function(){ 
openFB.logout(); //logouts after revoking permissions. 
alert('Logged out'); 
} 
+0

Вы используете getLoginStatus как метод синхронизации. Возможно, попытайтесь вернуть {loginStatus: "someStatus"} из метода. –

+0

В исходном методе FB.getLoginStatus используется кешированный результат, вам нужно передать дополнительный параметр, чтобы он обошел кеш (см. Docs.) Если это openFB thingie - это просто оболочка для официальных методов SDK (?), То это, вероятно, принимает такой параметр. – CBroe

ответ

2

openFB.getLoginStatus является асинхронной функция, которая принимает функцию обратного вызова в качестве параметра. Вы должны использовать его следующим образом:

openFB.getLoginStatus((loginStatus) => { 
    console.log(loginStatus); 
}); 
+0

Это выглядит хорошо, но когда я выхожу из системы, я все равно получаю статус = "connected" – shelum

+0

Это может быть проблема кэширования. как именно вы выходите из системы? надеюсь, с openFB.logout()? попробуйте api-вызов с openFB.api после выхода из системы и посмотрите, можете ли вы что-то получить. но не сразу вызывайте его сразу после выхода из системы, используйте функцию обратного вызова для выхода из системы ... это тоже асинхронно. – luschn

+0

да, openFB.logout(), а затем перенаправить после этого. Должен ли я отменять разрешения? – shelum

Смежные вопросы