2012-04-03 1 views
1

얻을 수있다 :사용자가 페이스 북에서 로그 아웃,하지만 웹 사이트는 아직도 내가 다음 코드있어 한 자신의 데이터

$fb = new Facebook(array('appid'=>APPID, 'appsecret'=>APPSECRET)); 
$user = $fb->getUser(); 

if($user) 
{ 
try { 
$me = $fb->api('/me'); 
} 
catch(FacebookApiException $e) { 
error_log($e); 
enter code here 
$user = null; 
} 

if($user) { blah blah blah 

그리고 사용자는 사용자가 로그인과 경우에 로그인하지 않은 경우 제대로 작동, 그것은 작동합니다. 하지만 그가 $fb->getLogoutUrl()에서 링크를 클릭하고 페이스 북에서 성공적으로 로그 아웃 한 경우에만 내 앱에 여전히 데이터가 보관됩니다. 나는 사용자가 로그 아웃되었지만 그렇지 않은 경우에 $fb->api('/me')을 시도하면 예외가 발생한다고 읽었습니다. $_SESSION 테이블을 지우면 도움이되지만 제대로 해결되지 않는다고 생각합니다.

아이디어가 있으십니까?

+0

$ _SESSION 테이블에서 무엇을 삭제 하시겠습니까? 만약 사용자를 로그 아웃 한 후에'destroySession'을 실행하면 어떨까요? – Sammaye

+1

쿠키 문제가 있다고 생각합니다. –

+0

@WaqarAlamgir 실제로'accessToken'은 logout에 의해 무효화되지 않고 fb는 이제 60 일 동안 오프라인 접근을 허용하는 확장 된 접근 토큰을 사용합니다. 왜냐하면'destroySession'이 쿠키를 uinset해야하고 문제를 해결해야한다고 생각합니다. – Sammaye

답변

1

이것은 페이스 북의 확장 액세스 토큰 (확실하지는 않지만)이 기본적으로 오프라인 액세스 (실제로는 대체 : https://developers.facebook.com/roadmap/offline-access-removal/)와 동일하지만 60 일 동안 발생한다고 생각합니다.

그래서 나는 정말로 걱정할 것이 없다고 생각합니다. $ _SESSION 테이블을 삭제

도움하지만 난 그게 제대로 솔루션입니다 생각하지 않는다 : 나는에 의해 당신이 무슨 뜻인지 확실입니다. 난 당신이 "청소"정확히 무엇인지 확실하지 오전부터

, 당신은 당신의 응용 프로그램을 DEAUTH하지 않습니다 알고 있지만 어떤 경우에는, 그래 즉, 사용자 정보에 액세스 당신을 막을 것 accessToken를 삭제 될 수 있습니다. 로그인과 로그 아웃은 인증과 인증 해제와 완전히 다른 두 가지 작업입니다./me url은 일반적으로 액세스가 허용 된 경우 (예 : 사용자가 앱을 deauthed 한 경우)에만 예외를 발생시킵니다.

로그 아웃 후 ($fb->destroySession()) destroySession을 사용하면 사용자 측의 쿠키를 삭제하고 사용자 액세스를 재설정하여 대부분의 문제를 해결할 수 있다고 생각합니다.

관련 문제