2016-11-29 9 views
0

사용자가 OpenFB for Cordova를 사용하여 Facebook에 로그인 할 수있는 웹 응용 프로그램을 구축 중입니다. 그들이에 로그인 한 경우 나 특정 기능을 볼 수 싶어 내가 로그인 상태에 대한 검사를 실행하고 다시 지시에 로그인하지 않은 경우하려고 이것은 내가 지금까지 무엇을 가지고 :..사용자가 로그인하지 않은 경우 페이지 리디렉션

<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 값을 얻지 못하면 정의되지 않습니다. 페이스 북으로 로그인 한 경우에도. 나는 명백한 것을 놓치고 있는가?

아웃 코드 요청한 :

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

동기화 방법으로 getLoginStatus를 사용합니다. 메소드에서 {loginStatus : "someStatus"}를 반환하려고 시도했을 수 있습니다. –

+0

원본 FB.getLoginStatus 메서드는 캐시 된 결과를 사용하므로 캐시를 우회하도록 추가 매개 변수를 전달해야합니다 (docs 참조). 해당 openFB 객체는 공식 SDK 메서드 (?)의 래퍼 일 뿐이므로 그러한 매개 변수를 취합니다. – CBroe

답변

2

openFB.getLoginStatus 파라미터로 콜백을 얻어 비동기 함수이다. 다음과 같이 사용해야합니다 :

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

이것은 좋아 보이는데, 내가 로그 아웃 할 때 나는 여전히 상태 = "connected"가된다. – shelum

+0

캐시 문제 일 수있다. 어쨌든 당신은 정확히 어떻게 로그 아웃합니까? openFB.logout()으로 잘만 되었습니까? 로그 아웃 후 openFB.api로 API 호출을 시도하고 뭔가를 얻을 수 있는지 확인하십시오. 하지만 로그 아웃 직후에는 호출하지 말고, logout의 콜백 함수를 사용하십시오. 그 중 하나는 비동기입니다. – luschn

+0

예, openFB.logout() 그런 다음 리디렉션하십시오. 권한을 취소해야합니까? – shelum

관련 문제