2011-08-12 3 views
1

으로 페이스 북 사용자의 로그인 상태를 가져옵니다 : 그 질문에 How to know if a user log out of Facebook, FB.Event.Subscribe not work이 질문은 나의 또 다른 질문에 관련이 실시간

, 나는 사용자가 페이스 북에서 로그 아웃 할 때 이벤트를 전화를 다시 얻기 위해 노력했다. 아직 적절한 대답이 없기 때문에 다른 방법을 시도해야합니다. 나는 다음과 같이 자바 스크립트에 의해 사용자의 로그인 상태를 확인하기 위해 폴링을 시도 :

 function checkLogin() 
     { 
      alert("in"); 
      FB.getLoginStatus(function(response) { 
       if (response.status == "connected") { 
       // logged in and connected user, someone you know 
       alert("ok - 5 seconds has passed"); 
       } else { 
       // no user session available, someone you dont know 
       alert("not ok"); 
       } 
      }); 
      t=checkLogin("timedCount()",5000); 
     } 

이 문제는 즉 : 함수는 올바른 결과를이을 호출되는 첫 번째 시간을 반환합니다. 그 후에는 결과가 캐싱 된 것 같습니다. 사용자 자동으로이 브라우저의 다른 탭에 의해 로그 아웃되었지만 응답으로 "연결됨"을 계속 받았습니다.

그때는 페이스 북이 사용자에게 로그인하라는 대화 상자를 표시하기 때문에 좋지 않습니다. 그러나 사용자가 취소하면 여전히 내 응용 프로그램과 작업 할 수 있습니다 (응용 프로그램 서버와의 세션이 아직 만료되지 않았 음).

당신이 FB.getLoginStatus를 호출

는 HTTP 요청은 사용자의 현재 상태를 확인 www.facebook.com 이루어질 수있다 다음 document에서

는 FB DEV는 말한다. FB.getLoginStatus가 이미이 브라우저 세션에서 호출 된 경우, 및 세션 쿠키 내에서 지속 된, 에 HTTP 요청이

그래서 나는이 효과를 생각

를 필요하지 않을 수 facebook.com 캐시에 의해 발생합니다. 나는 페이스 북이 그렇게하는 이유를 궁금해.

누구든지이 문제를 해결할 수 있습니까? 어떤 도움

감사합니다,

호앙 롱

답변

1

그것은 내 동료 중 하나가 될 때까지 문제를 해결, 결국, 충분히 나에게 오랜 시간이 걸렸습니다.

getLoginStatus을 호출하기 전에 으로 다시 전화해야합니다 (cookie:false). 이렇게하면 쿠키가 제거되고 새로운 정보가 제공됩니다.

FB.init({ 
     appId:'${appId}', 
      cookie: false, 
     status: true, 
     xfbml: true 
    }); 

FB.getLoginStatus(function (response) { 
     if (response.session) { 
       alert("here"); 
     } 
}); 
+0

문제를 업데이트하기 위해 : FB가 일부 변경 사항을 제거했으며 litte 위의 코드를 업데이트해야합니다. 세부 정보 : https://developers.facebook.com/blog/post/525/ –

관련 문제